我想要进入`/var/named`目录,但是它给了我一个权限被拒绝的错误,并且当我想要使用`sudo`来执行时,我没有被允许。这个问题的技术原因是什么,还有其他的解决方法吗?
cd
不是一个程序,而是一个内置命令,而sudo
只适用于程序。
sudo foo
表示以root身份运行程序foo。
sudo cd /path
无效。
sudo: cd: command not found
cd
不是一个程序。
sudo -i
cd /var/named
exit
,你将恢复为普通用户身份登录。这是因为cd
不是一个可执行程序,它是一个用于改变目录的shell函数。
如果你运行:
type cd
sudo -s
cd /var/named
sudo cd foo
,因此您也无法使用sudo type foo
,因为它是一个shell内置命令。 - MAChitgarhasudo sh -c "cd restricted-dir; some_command"
sudo -i
,这将使您进入根 shell,在此您可以自由地浏览文件系统并执行任何命令。但请注意,当您退出此 shell 时,由于我前面描述的相同原因,您仍然会回到起始目录层级中。sudo cd /somewhere
确实按照字面意思执行了,但是当 sudo
退出时,你会回到起始位置。”的部分很有帮助。+1 - harperville
cd
命令既是内置命令又是外部命令。http://unix.stackexchange.com/questions/50058/what-is-the-point-of-the-cd-external-command - kojiro/usr/bin/cd
这个内置命令。 - Warren Hillsudo -i
(或sudo su
),然后切换到/var/named
目录,接着执行su normaluser
... 你可以这样做吗? - Alvin Wongsudo -i
,然后cd
到一个不应该进入的目录,在该目录中执行su normal_user
,然后输入pwd
会显示你在受保护的目录中,但是ls
不起作用,会显示"ls: cannot open directory.: permission denied"。 - Warren Hillsudo echo
能够工作,它也是一个像cd一样的shell内建命令
呢? - Balman Rawatsudo echo
运行的是/bin/echo
而不是echo
的shell内置命令。 - Eliah Kagan