以下失败:
sudo -u chris ls /root
ls: cannot open directory '/root': Permission denied
虽然以下成功:
sudo ls /root
...
我不懂为什么。我假设除了拥有 root 权限之外,-u
只需将 /running 用户更改为提供的参数即可。$USER
这种行为背后的原因是什么?
答案1
sudo -u chris
以 user 身份运行给定命令chris
,而不是以 root 身份USER
设置为chris
。因此,如果chris
无法访问/root
,sudo -u chris
就不会改变这一点。
看man sudo
:
-u 用户,- 用户=用户
以默认目标用户以外的用户身份运行命令(通常根)。
sudo
并不是专门的“以 root 身份运行”工具;它是一个“以其他用户或组身份运行”的工具。
答案2
须藤将以特定用户身份运行命令,默认为 root。这并不意味着它始终是 root,因为该-u
选项选择用户,而不是本例中的 root。如果你想成为 root,你可以运行一个命令sudo
(如sudo chown chris:chris ~
),或者你可以使用该命令su
将你的用户切换到 root,然后只需运行 exit 返回你的用户
答案3
须藤:S上层U塞尔做 它是一种授予用户执行系统命令的权限的方法。
如果克里斯是主持人试试这个
sudo -h chris ls -l /root
-h, --help 显示帮助消息并退出
-h, --host=host 在主机上运行命令(如果插件支持)
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Desktop
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Documents
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Downloads
或者你可以删除“root”
sudo -u chris ls -l /
左右右右右右右右 1根根 18 年 1 月 7 日 20:32 bin -> usr/bin
从http://www.linfo.org/root_directory.html
“根目录是类 Unix 操作系统上的目录,包含系统上的所有其他目录和文件,并由正斜杠 ( / )。
在这种情况下使用“根”一词是因为该目录位于目录树图的最顶部“”