假设有一个我无权访问的目录。显然sudo cd foo
是行不通的,因为cd
每个 shell 中都有一个内置的 shell。
到目前为止,我一直在使用sudo bash
(是的,我知道有更好的方法)来获取 root 提示。然后,我就可以cd
进入目录去翻阅了。
有一个更好的方法吗?
答案1
不,没有办法cd
进入只允许 root 而不是 root 的目录。实际上不应该有太多有此限制的目录。大多数时候,对给定文件的访问受到限制,/etc/shadow
例如/var/log
.
您可以使用sudo ls <dir>
to 查看它们,而不是bash
.另外,当使用sudo
成为 root 时,您通常希望设置用户(su
命令)而不是bash
,因此请使用此命令:
$ sudo su -
您还可以使用 sudo-i
开关完成同样的事情:
$ sudo -i
手册页摘录有关sudo -i
-i(模拟初始登录)选项将目标用户的 passwd(5) 条目中指定的 shell 作为登录 shell 运行。这意味着 shell 将读取特定于登录名的资源文件,例如 .profile 或 .login。如果指定了命令,则会将其传递到 shell 执行。否则,将执行交互式 shell。
对于无法访问的文件,可以使用以下任一sudo
命令:
$ sudo tail /var/log/messages
$ sudo less /etc/shadow
答案2
不,没有。您需要一个以 root 身份运行的 shell。
答案3
对,你不能。不过,这里有一个解决方法:
sudo sh -c "cd restricted-dir; some_command"