我有一个关于 sudo 命令和 root 用户的 Linux 问题。如果我使用该命令登录 root 用户su
,以下两个命令有什么区别?
root> sudo ./some_executable
和
root> ./some_executable
有什么区别吗?我尝试使用可执行文件,发现可执行文件可以很好地执行第一个命令,但第二个命令失败,提示我没有以 root 身份运行该命令。我一直认为 sudo/su 命令允许您以 root 权限执行命令,因此执行第一个命令是多余的。但是,我确实注意到 root 用户在 sudoers 文件中,所以我不知道这是可执行文件中的错误还是以 root 身份登录运行命令与使用 sudo 之间真的有区别?
答案1
这两个实例的环境变量将会有所不同。
sudo 将重置您的一些环境变量 - 阅读 sudo 的手册页并查看选项-E
以及 sudoers 配置文件中的部分。
此外,您使用su
而不su -
获取根权限意味着您在直接执行文件时没有真正的根环境。
总而言之,两种情况的环境不匹配,导致一种情况有效,而另一种情况无效。