不使用 sudo 命令更改所有权

不使用 sudo 命令更改所有权

我正在设置 Ubuntu 服务器,我想允许 FTP 客户端访问该/etc/文件夹。因此我使用命令chown允许我的帐户使用它。但是,这改变了所有权sudo并破坏了它。我无法以 运行任何命令,sudo因为所有者不是 root,而且我无法更改所有者,因为我必须使用sudo

我尝试以 root 身份启动到恢复模式并运行chown -R root /etcchown -R 0 /etc但都没有成功。

有没有办法在不重新安装 Ubuntu 的情况下修复这个问题?

答案1

重启,按住右 Shift 键调出 grub2 启动菜单。然后按照以下说明进入单用户模式。

如何从 grub 启动到单用户模式?

在单用户模式下,您可以修复文件权限,因为您自动成为 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 复制一个新的。如果执行此操作,则需要确保设置了什么密码,因为您还会覆盖密码文件)

但是,如果这是一个相对较新的安装并且您仍在设置:只需重新安装。

最快、最安全,但教育意义最不大。

相关内容