热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

apue学习第一天——不要轻易修改/etc权限

《UNIX环境高级编程》(第三版),第一天,开始。我的基础:计算机体系方面,本科专业课课程和CSAPP阅毕,曾使用过几个月Ubuntu,跑过一些程序,调过一些系统,没在上面写过程序。第一章扫
《UNIX环境高级编程》(第三版),第一天,开始。
我的基础:计算机体系方面,本科专业课课程和CSAPP阅毕,曾使用过几个月Ubuntu,跑过一些程序,调过一些系统,没在上面写过程序。
第一章扫了一遍,希望把代码重写一遍。
磨刀不误砍柴工,装上sublime text 2,设为默认editor(http://blog.omitol.com/set-sublimetext-to-default-editor/)。
下载apue.3e,解压,make出现错误,Google(http://blog.csdn.net/jasonque/article/details/8933194提供了貌似可行的解决方案)。但是,进行到上述网站中“cannot find lbsd”,即将进行$sudo apt-get install libbsd-dev的时候,问题来了。问题是,我之前修改了/etc的权限,导致出现:
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

好了,至于出现这个问题的原因,下面详细记录。
当初,看到有个人apue把source code放在/root下,我也想这样。但当我单击/root的时候,不让进,没办法,好奇心强(好奇心害死猫),非要进去,于是Google。看到有个人说:chown -R *:sudo /root(*是我的用户名),试之。哎?好了,这下可以进去了,不亦乐乎。这个命令的意思是对/root文件夹的权限进行更改,chown更改权限,*是自己的用户名,sudo是属于sudo group。于是对此命令屡试不爽,接着毫不含糊的改了好几个“/”下面的文件夹,其中就包括/etc,那么问题来了。
命令 chown -R *:sudo /root中还有个-R!输命令前好歹先看看命令是什么意思啊!chown --help 查一查chown的用法,出来了,-R是什么意思?Recursively!!!迭代地把/etc文件夹下所有的子文件和子文件夹的权限全部修改。但是/etc这个文件是干什么的?它存放的是系统管理和配置文件!!这下好了,本来/etc的权限是root:root被我改成了*:sudo,而且是recursively!!也许有人会想,没事啊,再改回来呗。但是,对于我一个菜鸟,天知道/etc下所有的文件属于哪个用户哪个分组?就当我改完之后,用$sudo命令,出现了上面提到的那个问题:
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo没法用了(root的id是0,我的id是1000,显而易见,也可以通过cat etc/passwd查询)。
既然没法用,那就尝试改回来呗。于是chown -R root:root /etc,这下挺好,sudo回来啦,又可以用了,但是,当我注销重新登录用户的时候,登不进来!输完密码点完确定,屏幕闪了一下还是登录界面。但是奇怪的是ctrl+alt+F1进入终端,普通用户,root却都可以登录,我在终端把/etc再次改为 *:sudo,ctrl+alt+F7回到GUI,哎,GUI可以进去了,但是,还有问题啊,关机则退回登陆界面卡住不动,重启也是同样的情况。
在网上查阅了各种资料,关于解决 /etc/sudoers is owned by uid 1000, should be 0 这个问题的,有说进入recovery mode恢复的(比如这篇文章遇到的问题和我的大同小异:http://www.it165.net/os/html/201410/9474.html),有一种更简单的说法,直接 pkexec chmod 755 /etc(http://askubuntu.com/questions/115358/changed-etc-permission-in-oneiric-ubuntu11-10-by-using-sudo-chmod-665-etc)。按照第二种说法,我试了一下,可行,sudo被修复。但仍有关机卡死的问题。
接下来一个人说的话启发了我,“Note the -R option. If you did run chmod with the -R option, then all folders and files within /etc will now have permissions of 644 and your system will be beyond practical repair.”(这个是chmod,不是chown)(http://ubuntuforums.org/showthread.php?t=1772959)我呵呵,考虑了一下,为了今后避免再出问题,还是重装吧。


推荐阅读
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 本文面向非计算机专业背景的编程爱好者,介绍如何仅使用基础的C语言知识——二维数组和结构体,无需掌握复杂的数据结构如链表,即可编写一款经典的贪食蛇游戏。通过本教程,您将了解游戏开发的基本原理和实现方法。 ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
  • Activity跳转动画 无缝衔接
    Activity跳转动画 无缝衔接 ... [详细]
  • 本文探讨了如何在Symfony框架中正确设置日期时间字段的格式,以满足特定的显示需求。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 本文探讨了Linux环境下线程私有数据(Thread-Specific Data, TSD)的概念及其重要性,介绍了如何通过TSD技术避免多线程间全局变量冲突的问题,并提供了具体的实现方法和示例代码。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
author-avatar
手机用户2502882485
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有