如何以 root 身份进入目录?

str*_*gee 15 bash sudo cd-command

假设有一个我无权访问的目录。显然是sudo cd foo行不通的,因为cd在每个 shell 中都内置了一个 shell。

到目前为止,我一直在使用sudo bash(是的,我知道有更好的方法)来获取 root 提示。然后,我就可以cd进入该目录四处看看了。

有一个更好的方法吗?

slm*_*slm 16

不,没有办法进入cd只允许 root 而不是 root 的目录。确实不应该有太多具有此限制的目录。在大多数情况下它的访问是有限的,如给定文件/etc/shadow下的文件或特定的日志文件/var/log

您可以使用sudo ls <dir>来查看它们而不是bash。此外,当使用sudo成为 root 时,您通常希望设置用户(su命令)而不是bash,因此请改用此命令:

$ sudo su -
Run Code Online (Sandbox Code Playgroud)

您也可以使用 sudo 的-i开关来完成同样的事情:

$ sudo -i
Run Code Online (Sandbox Code Playgroud)

摘自手册页关于 sudo -i

-i(模拟初始登录)选项将目标用户的 passwd(5) 条目中指定的 shell 作为登录 shell 运行。这意味着 shell 将读取特定于登录名的资源文件,例如 .profile 或 .login。如果指定了命令,则将其传递给 shell 执行。否则,将执行交互式 shell。

对于您无法访问的文件,您可以使用以下任一sudo命令:

$ sudo tail /var/log/messages

$ sudo less /etc/shadow
Run Code Online (Sandbox Code Playgroud)

  • 为什么要使用 `sudo su -` 而不是 `sudo -i`?它们都为您提供所有超级用户权限,尽管您只需要 CAP_DAC_READ_SEARCH 功能。 (3认同)

Ign*_*ams 5

不,没有。您需要一个以 root 身份运行的 shell。