意外删除了我的 /home 的执行权限

意外删除了我的 /home 的执行权限

之后,我无法执行任何命令,并且会收到“权限被拒绝”错误。

重新启动计算机后,当我输入密码时,Ubuntu 看起来好像正在加载一秒钟,但会一遍又一遍地返回到密码提示。

我做了什么:

  1. 输入以下命令进入 root 权限sudo -i
  2. 输入我的密码
  3. 我试图编辑 /home 文件夹中的权限,但我认为我更改了错误的目录。我做了一个chmod -R -x,现在我的 /home 没有执行权限。
  4. 类型su tom
  5. 无法执行任何命令或登录。

当我尝试输入哪怕是最简单的命令时,也cd出现了权限被拒绝的错误。

我无法登录 tom 用户,因此我使用的是访客帐户,无法使用 sudo。当我尝试登录时,cd /home出现错误bash:cd:/home:权限被拒绝

答案1

作为bodhi.zazen 说,您应该启动到恢复模式并改回权限。恢复模式应该仍能正常工作——此更改不太可能导致其无法使用——但如果出于任何原因您无法使用恢复模式,您可以使用实时 CD/DVD/USB。

启动时按住 shift 键,这样就会显示 GRUB 菜单。选择Ubuntu 的高级选项,然后选择第一个名称以 结尾的条目(恢复模式)。然后在恢复菜单上,选择标有以下内容的选项:

root              Drop to root shell prompt

这应该会给你一个#root shell 提示符。重新挂载你的/文件系统通过运行进行读写:

mount -o remount,rw /

(请注意,您不需sudo要这样做 - 也不需要执行chmod下面的命令 - 因为您已经处于恢复模式为您提供的 root shell 中。)

假设您所做的唯一更改是执行权限,那么您只需运行:

chmod a+x /home
chmod -R u+X /home/tom

+X当某个文件已经可由某个用户执行时专门设置执行权限或目录(看man chmod有关详细信息;请注意,大写字母+X不同于+x,后者始终设置执行权限)。在目录上,执行权限授予进入目录的能力。失去这种能力似乎实际上是导致您无法访问自己的帐户的原因。

  • 自从你只是拿走了可执行权限,有不需要使用更复杂的方式遍历目录层次结构find命令和按类型识别每个文件以更改其权限.chmod用 递归运行+X将使所有目录再次由其所有者“可执行”(即可进入),这正是您在这里所需要的。(实际上没有什么错误的使用find基于的方法,例如在tfmertz 的回答——无论哪种方式都可以单独使用。如果你碰巧同时使用两种方式,那也很好。)

然后正常启动,通过运行reboot或运行exit(这将带您回到恢复菜单)并选择恢复选项。

这些chmod命令不一定能让事情回到确切地之前的情况如何——为此,可能需要查看您运行了哪些命令(但您可以在history重新登录后运行来找到这些命令)。但是,这可能足以让您再次正常登录和使用 Ubuntu 系统。

这种情况和解决方案类似于更常见的情况,即系统的唯一管理员丢失了密码。因此,虽然您更改的是权限而不是密码,并且解决方案并不完全相同,但您可能会发现查看以下内容很有用如何重置丢失的管理密码?那里的一些答案包含屏幕截图,显示如何从恢复模式获取 root shell。如果您无法访问恢复模式,请按照那里的说明(以及另一个问题) 关于从实时 CD/DVD/USB 访问您的系统的信息应该会有所帮助。

答案2

/home 文件夹需要恢复其执行权限

  1. 重启 Ubuntu
  2. 以 root 身份运行恢复模式(恢复模式如何
  3. 运行 find 命令来恢复权限

重置 /home 权限

运行以下两个命令z9.io

对于目录仅执行此操作

find . -type d -exec chmod 775 {} \;

仅对文件执行此操作。

find . -type f -exec chmod 664 {} \;

以正常模式重新启动 Ubuntu 并尝试登录。

答案3

不仅仅是一个答案,只是关于这个问题的评论,几分钟前(2016 年 1 月 26 日)我遇到了这个问题,当时我正在完成一个实验,输入了 chmod 600 ~ 命令,所以我无法访问我的家,所以我找到了这篇文章,首先尝试了 find 命令,终端开始读取所有内容,但最终都以权限被拒绝的结果结束。我继续尝试:chmod a+x /home chmod -R u+X /home/myname

这立即解决了问题。我能够再次开始输入 cd。

相关内容