首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪一个更安全?sudo dnf更新或su -;dnf更新

哪一个更安全?sudo dnf更新或su -;dnf更新
EN

Unix & Linux用户
提问于 2020-04-11 06:01:39
回答 2查看 680关注 0票数 -1

这样做是否更安全:

  1. $ sudo dnf update

  1. $ su -# dnf更新

我总是假设它们是完全相同的,因为sudo使用setuid- root,所以作为sudo的第一个arg运行的进程是使用sudo的有效ID (即根)运行的。

I猜测我的问题是: sudo最终是否会将其有效ID降到普通用户的?那么,在这种情况下,上面的第1条将是一个更安全的赌注,因为如果运行sudo的程序被攻击者破坏了,那么攻击者就有可能不会以root用户的身份运行,因为特权已经被删除了?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-04-11 10:44:02

第一个命令(可能)需要正确的密码,将dnf update作为root运行,然后退出:

$ sudo dnf更新

第二个命令需要root的密码,然后启动根shell。在这个shell中,您可以运行dnf update

$ su -# dnf更新

你不是真的在拿什么来比较。您可以比较这两个命令,这两个命令都启动一个根shell,在其中运行(至少)命令dnf update

代码语言:javascript
复制
sudo -s
dnf update

su -
dnf update

或者您可以比较这两个命令,这两个命令都启动了dnf update的根特权实例,然后退出到调用方的shell。

代码语言:javascript
复制
sudo dnf update

su root -c 'dnf update'

我认为您实际上要问的是,是否最好以根权限调用单个命令,还是启动一个根特权shell,在其中运行一个或多个命令。

  • 如果dnf功能或它的下载在某种程度上受到损害,那么它的运行方式并不重要,问题是它根本没有运行
  • 如果您说的是危害您的系统,那么它可以归结为用户密码(sudo)和root密码(su)的安全性。
  • 如果您正在考虑是否可以信任用户,那么无论您是在根shell中运行多个命令还是根shell一次运行一个命令,问题是命令可以作为根命令运行。

就我个人而言,我根据需要混合和匹配我的用法。我很少使用su,但我确实使用sudo {command....}进行快速一次性操作,或者在短时间会话中使用sudo -s,其中我需要运行多个命令(例如Debian包管理工具,apt-get update后面跟着apt-get upgrade)。

票数 1
EN

Unix & Linux用户

发布于 2020-04-11 09:47:05

是的,当子进程结束时,sudo会放弃特权。在这种情况下,dnf。当子进程结束时,当su放弃特权时。在这种情况下,是一个交互式的shell。因此,sudo示例会更快地降低特权。

sudo还具有这里未涉及的其他优点。(例如,sudoers文件,可以用来对每个用户可以和不能做的事情给予更多的控制)。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/579337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档