usingsudo
和 using之间有什么区别su -c
吗?在某些情况下应该使用一种而不是另一种?
我以前使用 Ubuntu,那里sudo
似乎无处不在,但现在我尝试使用 Fedora 15,su -c
当我尝试学习如何做一些事情时,这个习语经常出现,尽管我仍然时不时地看到有人sudo
在使用它。
Gil*_*il' 14
sudo
和之间的区别在于su
它们如何执行身份验证:
su
提示输入目标用户的密码。sudo
检查源用户是否有权运行命令(授权在 中指定/etc/sudoers
)。根据配置,它可能会提示输入源用户的密码,以降低无人值守控制台的风险并提醒用户权限提升正在进行中。获得授权后,效果相同:以 root 身份运行命令(或者,如果在命令行中指定,则以其他用户身份运行)。
还有更小的区别:它们不采用相同的选项,并且它们不以完全相同的方式为它们运行的命令设置环境。但对于常见用法,它们是相同的。
它们在语义上是不同的。
使用su
意味着您不希望被调用的进程知道您不是真正的目标用户。手册页建议始终选择 option su --login
。
使用的sudo
意思正好相反。sudo
甚至设置一个新的环境变量SUDO_UID
来告诉进程你到底是谁。
顺便说一句,su
适用于古老的 unix 显示管理器或 shell 配置文件,它在调用交互式 shell 之前仅设置少量环境变量(HOME
、等)。PATH
和su
重置这些变量。
然而,现代初始化系统设置了更多的环境变量。例如Linux PAM 设置XDG_RUNTIME_DIR
,它不会被重置su
。因此,su --login
无法模拟真实的登录。请参阅https://github.com/systemd/systemd/issues/7451#issuecomment-346787237
归档时间: |
|
查看次数: |
5989 次 |
最近记录: |