之后,我无法执行任何命令,并且会收到“权限被拒绝”错误。
重新启动计算机后,当我输入密码时,Ubuntu 看起来好像正在加载一秒钟,但会一遍又一遍地返回到密码提示。
我做了什么:
- 输入以下命令进入 root 权限
sudo -i
- 输入我的密码
- 我试图编辑 /home 文件夹中的权限,但我认为我更改了错误的目录。我做了一个
chmod -R -x
,现在我的 /home 没有执行权限。 - 类型
su tom
- 无法执行任何命令或登录。
当我尝试输入哪怕是最简单的命令时,也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
答案3
不仅仅是一个答案,只是关于这个问题的评论,几分钟前(2016 年 1 月 26 日)我遇到了这个问题,当时我正在完成一个实验,输入了 chmod 600 ~ 命令,所以我无法访问我的家,所以我找到了这篇文章,首先尝试了 find 命令,终端开始读取所有内容,但最终都以权限被拒绝的结果结束。我继续尝试:chmod a+x /home chmod -R u+X /home/myname
这立即解决了问题。我能够再次开始输入 cd。