如果目录具有 700 权限且不归我所有,如何使用“cd”命令进入该目录?

Bak*_*yor 103 permissions command-line sudo cd-command

我尝试使用sudo cd name_of_dir但收到错误消息:

sudo: cd: command not found
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以进入另一个拥有 700 权限的用户拥有的目录?

Rin*_*ind 131

sudo cd将无法工作,因为该cd命令已内置到 shell 中。所以你说成为root然后运行这个命令。您成为 root,然后搜索 sudo 之后的命令,但没有cd找到命令。

使用的方法是切换到拥有该目录的用户。权限700的意思是“所有者可以读、写和执行”。

所以如果 root 拥有目录sudo -i,密码然后cd {dir}是唯一正确的方法。如果其他人拥有该目录,您仍然可以使用第一种方法,但也可以更改为该用户,su {username}然后cd作为该用户使用。

  • 是的 MestreLion,700 不会阻止 root 进入。权限 '000' 将阻止用户进入他自己(是的,用户可以创建一个他自己无法进入的目录......)但 root 仍然可以进入那个目录。 (3认同)

Voj*_*fny 55

sudo -i

打开“根控制台”,然后

cd /path/to/directory

(cd是一个 shell 内置命令,所以它不能是 sudo 目标)


Tak*_*kat 21

要打开一个根目录,我们可以运行一个 root shell,例如:

sudo su
# cd /root
Run Code Online (Sandbox Code Playgroud)

  • 进入 root 模式没有任何问题。专家总是建议在需要时进入 root。 (11认同)
  • 嗯,这正是您不想要打开 root 目录的权限的原因,不是吗? (8认同)
  • 我不想以 root 身份工作。绝不!!!专家还建议永远不要以 root 身份登录。-1 (3认同)
  • @Bakhtiyor:确实不建议一直以 root 身份*工作*。但是为单个(或几个)命令发出它是可以接受的。*特别是*如果您尝试进入一个您*您的用户没有权限*的目录。所以你*需要*是所有者或根。 (3认同)
  • 如果您正在使用 root 拥有的东西,有时`sudo su`ing(或其他方法)是唯一实用甚至可能的方法。“专家”只是告诉您不要将root用作习惯-当您真正需要它时就可以了。还有@Vojtech,没有什么是不可能的...... (2认同)

小智 11

正如其他人指出的那样 - 它是内置的外壳:

~ % which cd
cd: shell built-in command
Run Code Online (Sandbox Code Playgroud)

那么,你为什么不 sudo shell 本身呢?

~ % sudo $SHELL -c "cd name_of_dir"
Run Code Online (Sandbox Code Playgroud)

  • +1 为 sudo bash -c 想法...和一个建议:避免使用 `which`。它只是一个脚本,它不会处理所有可能性(二进制、内置、别名等)。改用`type`。更安全、更强大、更便携。并为可执行文件的路径输入`type -p`。 (5认同)

Vic*_*Dev 6

您还可以通过以下方式将自己提升为 root 用户:

sudo -s
Run Code Online (Sandbox Code Playgroud)

然后你可以 cd 到任何不允许普通用户进入的目录,例如:

cd /root
Run Code Online (Sandbox Code Playgroud)

或者

cd /var/lib/
Run Code Online (Sandbox Code Playgroud)

然后在你完成之后输入:

exit
Run Code Online (Sandbox Code Playgroud)

注销root用户权限。

为了将自己提升为root,您还可以&&按如下操作符组合这两个命令,该操作符也保持它们的执行顺序,如果当前命令执行成功,则才允许执行下一个命令:

sudo -s && cd /var/lib
Run Code Online (Sandbox Code Playgroud)

或者

sudo -s && cd /root
Run Code Online (Sandbox Code Playgroud)