这样做是否更安全:
$ sudo dnf update或
我总是假设它们是完全相同的,因为sudo使用setuid- root,所以作为sudo的第一个arg运行的进程是使用sudo的有效ID (即根)运行的。
I猜测我的问题是: sudo最终是否会将其有效ID降到普通用户的?那么,在这种情况下,上面的第1条将是一个更安全的赌注,因为如果运行sudo的程序被攻击者破坏了,那么攻击者就有可能不会以root用户的身份运行,因为特权已经被删除了?
发布于 2020-04-11 10:44:02
第一个命令(可能)需要正确的密码,将dnf update作为root运行,然后退出:
$ sudo dnf更新
第二个命令需要root的密码,然后启动根shell。在这个shell中,您可以运行dnf update:
$ su -# dnf更新
你不是真的在拿什么来比较。您可以比较这两个命令,这两个命令都启动一个根shell,在其中运行(至少)命令dnf update。
sudo -s
dnf update
su -
dnf update或者您可以比较这两个命令,这两个命令都启动了dnf update的根特权实例,然后退出到调用方的shell。
sudo dnf update
su root -c 'dnf update'我认为您实际上要问的是,是否最好以根权限调用单个命令,还是启动一个根特权shell,在其中运行一个或多个命令。
dnf功能或它的下载在某种程度上受到损害,那么它的运行方式并不重要,问题是它根本没有运行sudo)和root密码(su)的安全性。就我个人而言,我根据需要混合和匹配我的用法。我很少使用su,但我确实使用sudo {command....}进行快速一次性操作,或者在短时间会话中使用sudo -s,其中我需要运行多个命令(例如Debian包管理工具,apt-get update后面跟着apt-get upgrade)。
发布于 2020-04-11 09:47:05
是的,当子进程结束时,sudo会放弃特权。在这种情况下,dnf。当子进程结束时,当su放弃特权时。在这种情况下,是一个交互式的shell。因此,sudo示例会更快地降低特权。
sudo还具有这里未涉及的其他优点。(例如,sudoers文件,可以用来对每个用户可以和不能做的事情给予更多的控制)。
https://unix.stackexchange.com/questions/579337
复制相似问题