我的 Ubuntu 出现问题,我安装了 tomcat 服务器并进行了设置,但我需要更改一个目录并授予我当前用户对它的读取权限,因此我执行了:
chmod -R 644 /bin
从那时起我一直收到错误,例如如果我尝试更改目录,我会得到没有这样的命令的输出,所以我尝试重新打开它(终端),现在当我再次尝试打开终端时它会自动关闭,有人可以解释为什么会发生这种情况,有没有办法扭转它?
答案1
请不要为了读取 root 拥有的文件而更改权限。以后,如果您想读取您无权访问的文件,请使用sudo cat
或或以 root 权限打开文本编辑器。如果您认为出于某种原因确实需要更改权限,请先进行研究或提出相关问题。使用和sudo less
很容易破坏您的系统。chown
chmod
无论如何,你的用户已经有对该目录及其所有内容具有读取权限。该/bin
目录具有权限755
或rwxr-xr-x
,其绝大部分内容也具有权限。任何用户都可以读取和执行它们。
您删除了执行位(644
= rw-r--r--
),使得所有人都可以读取文件,root 可以写入文件,但任何用户都无法执行文件。
当您从目录中删除执行位时,除 root 之外,其他人都无法进入该目录。
当您从文件中删除执行位时,您将无法执行该文件,即使是 root 也无法执行。
Bash 程序位于/bin/bash
。您已使其所在目录不可访问,并且您已使二进制文件本身不可执行,因此甚至 root 也无法运行它。chown
和chmod
也位于 中/bin
,因此您甚至无法使用另一个 shell 来运行它们(如果您碰巧有一个不在 中的 shell)/bin
。
重新安装系统是确保一切正确的最佳方法,但如果您想尝试修复它或您真的想避免这种情况,您可以做的是从实时系统启动(例如 USB 安装介质或系统恢复),挂载根分区,然后从那里更改权限。请参阅terdon 的回答在这里实现此目的的最佳方法(用 替换/etc
并/bin
使用 代替chmod
)chown
。