如何以 root 身份 cd 进入某个目录?

如何以 root 身份 cd 进入某个目录?

假设有一个我无权访问的目录。显然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"

相关内容