首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行程序/命令/服务时,sudo是否会降低权限?

在运行程序/命令/服务时,sudo是否会降低权限?
EN

Security用户
提问于 2020-04-11 09:08:51
回答 3查看 388关注 0票数 0

For示例

这样做是否更安全:

  1. $ sudo [cmd] [args]

  1. 苏#

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

my的问题是: sudo最终是否会将其有效ID降到普通用户的?那么,在这种情况下,上面的第1号将是一个更安全的赌注,因为如果sudo运行的程序/服务被攻击者破坏了,那么攻击者就有可能不会以root身份运行,因为特权已经被删除了(有点像竞争条件)?但是与数字2相比,任何程序在以root的形式运行时都是有害的。

EN

回答 3

Security用户

回答已采纳

发布于 2021-10-03 22:53:21

TL;DR: No.

Sudo是它自己的程序(正如您注意到的,它是setuid ),它启动另一个程序。启动程序继承了sudo在启动程序时所具有的UID、GID等,但在此之后,它们是具有自己的PID和自己的UID/GID的独立进程,对一个进程的ID的更改将不会对另一个进程产生影响。

sudo [cmd] [args]启动一个程序(例如/bin/sudo),该程序作为根用户运行,并读取sudoers文件(/etc/sudoers),以确定当前用户(调用sudo的用户,“真实的”UID)授权做什么。在典型的用户情况下,只有当用户进行身份验证(使用自己的密码或其他密码)时,才能授权用户执行命令;然后,sudo将提示并验证凭据。一旦授权用户通过身份验证,sudofork (或类似的调用)创建子进程(具有新的PID,但具有包括UID和PID在内的相同权限),子进程将通过execve系统调用使用指定的参数启动指定的程序(或脚本),该调用将用指定的进程替换当前进程,但维护其PID。

无论新命令--或者产生它的sudo命令运行多长时间--它都不会改变它的访问权限或ID,因为sudo所做的任何事情都是如此。如果它被编程来编辑in,它可能会自己编辑,但sudo不是(新命令启动后就不会了;在启动新进程之前,它可能能够响应sudoers文件中的参数或其他内容)。

票数 1
EN

Security用户

发布于 2020-04-11 09:26:19

据我所知,使用sudo启动服务将以根权限运行该服务。这些服务将不会在服务的生命周期内放弃。

但是,如果使用su root,则切换到根用户,您发出的每个命令都将作为根用户执行。您应该注意到这一点,而不是启动不需要根权限的其他服务。从这个意义上说,使用sudo可能更安全。但这更多的是用户/管理员的风险。

票数 0
EN

Security用户

发布于 2021-01-06 13:28:52

您可能想看看‘djb方式’。您可以使用此方法以根用户身份启动流程(例如,将服务绑定到低编号端口),然后它将在进程启动后立即将进程的控制权交给指定的用户(例如,低权限用户)。

有关更多信息,请参见:http://thedjbway.b0llix.net/daemontools/uidgid.html

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

https://security.stackexchange.com/questions/229640

复制
相关文章

相似问题

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