为什么“sudo cd /var/named”不起作用?

为什么“sudo cd /var/named”不起作用?

我想cd进入,/var/named但它给出了一个权限被拒绝的错误,当我想使用sudo它来执行此操作时,却没有被允许。这背后的技术原因是什么?是否可以通过其他方式实现?

答案1

你不能这样做的原因很简单,有两个方面

1

cd它不是一个程序,而是一个内置命令,并且sudo仅适用于程序。

sudo foo表示以 root 身份运行程序 foo

sudo cd /path返回

sudo: cd: command not found

因为cd不是一个程序。

2

如果可以使用须藤cd受保护的目录,然后运行该命令,sudo cd /var/named您将作为普通用户进入该目录,但普通用户不允许进入该目录。

这不可能。

解决方法:

您可以使用sudo -i将自己提升为超级用户。例如:

sudo -i
cd /var/named 

您现在已以 root 身份登录,可以使用任何您想要的命令。输入完成后exit,您将恢复为以普通用户身份登录。

答案2

这是因为cd它不是一个可执行文件,而是一个用于更改目录的 shell 函数。

如果你运行:

type cd

您将获得:

cd 是一个 shell 函数

您可以使用sudo -s打开交互式 shell,然后cd转到所需的目录:

sudo -s
cd /var/named

要返回正常 shell,只需按Ctrl+ D

答案3

以上所有答案都是正确的;不过这里有一个解决方法

sudo sh -c "cd restricted-dir; some_command"

答案4

如果您是 sudo 用户,您也可以暂时更改权限。

sudo chmod 0775 路径

或者

sudo chmod +r 文件夹路径

如果有必要的话请务必将其放回原处。

相关内容