热门标签 | 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)我呵呵,考虑了一下,为了今后避免再出问题,还是重装吧。


推荐阅读
  • PHP引用的概念和用法详解
    本文详细介绍了PHP中引用的概念和用法。引用是指不同的变量名访问同一个变量内容,类似于Unix文件系统中的hardlink。文章从引用的定义、作用、语法和注意事项等方面进行了解释和示例。同时还介绍了对未定义变量使用引用的情况,以及在函数和new运算符中使用引用的注意事项。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • MySQL数据库查询注意事项及查询命令详解
    本文介绍了在进行MySQL数据库查询时需要注意的地方,包括启动informix数据库的命令oninit,查询状态的命令onstat,以及相关的网址链接。同时还详细解释了oninit命令的用法和参数,包括初始化磁盘空间和共享内存、保留在线模式等。对于需要进行MySQL数据库查询的读者,本文提供了实用的查询命令和相关注意事项,帮助读者更好地进行数据库查询。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • Ubuntu 用户安装 Linux Kernel 3.15 RC1
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Answer:Theterm“backslash”isonofthemostincorrectlyusedtermsincomputing.People ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
author-avatar
deadman21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有