问题描述
我尝试使用sudo cd name_of_dir
但收到错误消息:
sudo: cd: command not found
有没有其他方法可以输入拥有700权限的其他用户拥有的目录?
最佳解决方法
sudo cd
无法正常工作,因为cd
命令内置于shell中。所以你说成为root然后运行这个命令。你成为root,然后搜索sudo之后的命令,但没有找到cd
命令。
使用的方法是切换到拥有该目录的用户。权限700
表示“所有者可以读取,写入和执行”。
因此,如果root拥有目录sudo -i
,则密码然后是cd {dir}
是唯一正确的方法。如果其他人拥有该目录,您仍然可以使用第一种方法,但也可以使用su {username}
更改为该用户,然后使用cd
作为该用户。
次佳解决方法
sudo -i
然后打开”root console”
cd /path/to/directory
(cd
是一个shell内置命令,所以它不能是sudo目标)
第三种解决方法
要打开根目录,我们可以运行root shell,例如:
sudo su
# cd /root
第四种方法
正如其他人指出的那样 – 它的 shell 是内置:
~ % which cd
cd: shell built-in command
那么,你为什么不sudo shell本身呢?
~ % sudo $SHELL -c "cd name_of_dir"
第五种方法
您还可以通过以下方式将自己提升为root用户:
sudo -s
然后你可以cd到任何不允许普通用户的目录:
cd /root
要么
cd /var/lib/
在你完成之后输入:
exit
注销root用户权限。
为了以root身份提升自己,您还可以通过&&
运算符组合这两个命令,如果当前命令成功执行并且只允许执行下一个命令,则此运算符也会保持其执行顺序:
sudo -s && cd /var/lib
要么
sudo -s && cd /root