我正在设置 Ubuntu 服务器,我想允许 FTP 客户端访问该/etc/
文件夹。因此我使用命令chown
允许我的帐户使用它。但是,这改变了所有权sudo
并破坏了它。我无法以 运行任何命令,sudo
因为所有者不是 root,而且我无法更改所有者,因为我必须使用sudo
。
我尝试以 root 身份启动到恢复模式并运行chown -R root /etc
,chown -R 0 /etc
但都没有成功。
有没有办法在不重新安装 Ubuntu 的情况下修复这个问题?
答案1
重启,按住右 Shift 键调出 grub2 启动菜单。然后按照以下说明进入单用户模式。
在单用户模式下,您可以修复文件权限,因为您自动成为 root 用户。
一般来说,如果只是文件所有权发生了变化。您可以运行:
chown -R root:root /etc
这会将所有权和组改回默认根。
我这里有一个 ubuntu 服务器 12.04 LTS,/etc 下有少量文件/目录具有不同的组所有权。除此之外,所有文件都归 root 所有。具有不同组所有权的文件如下:
/etc:
-rw-r----- 1 root daemon 144 Oct 26 2011 at.deny
drwxr-s--- 2 root dip 4096 Aug 22 12:01 chatscripts
-rw-r----- 1 root shadow 697 Oct 31 12:58 gshadow
-rw-r----- 1 root shadow 1569 Oct 31 13:00 shadow
/etc/chatscripts:
-rw-r----- 1 root dip 656 Aug 22 12:01 provider
因此,您可以在首先运行 chown 之后对这些文件运行 chgrp 命令。然后,所有内容应该会恢复到应有的状态。对于普通用户来说,这应该不会超过 10 分钟。
e.g.
chgrp shadow /etc/shadow
哦,还有最后一步。完成更改后,重新启动。
/> reboot
答案2
您可以使用 ubuntu-cd 启动您的计算机并挂载相关的文件系统,然后手动修复这些文件的权限和所有权。
但是 /etc 包含很多需要修复的文件......可能需要一些时间。
答案3
如果您需要修复它,请首先检查权限应该是什么。它们可能不都是 root:root。最坏的情况是它们不是,而且您在尝试找出为什么其他东西不起作用之后才发现这一点。
在某处安装相同版本的 Ubuntu。检查所有权限。
如果它们都是 root:root,则获取 root 提示符。通过启动 liveCD 或以某种方式启动到单用户模式。(例如,带有 init=/bin/bash 的 LILO,或 shift-GRUB)。挂载包含 /etc 的文件系统,并将文件更改为正确的权限。
如果并非所有文件都是 root:root,那么您可能需要构建一个脚本来设置值(使用您之前进行的相同安装来查找这些值)。
如果这是一次不错的全新安装,您可以尝试复制一个新鲜的从其他安装中复制 /etc(将旧的 /etc 移动到另一个位置,例如将其移动到 etc.backup 并从 pendrive 复制一个新的。如果执行此操作,则需要确保设置了什么密码,因为您还会覆盖密码文件)
但是,如果这是一个相对较新的安装并且您仍在设置:只需重新安装。
最快、最安全,但教育意义最不大。