出于安全原因,我正在尝试使用 Ubuntu 20.04 以另一个用户身份运行我的网络浏览器。整个事情都有效,但我注意到root拥有的“sudo -u browseruser”进程仍保留在进程列表中。
这是如何复制行为(我使用相同的用户而不是 browseruser 作为示例以避免与 xhost 授权等相关的详细信息,但您可以理解我的意思):
marco@portatilinux:~$ sudo -u marco firefox &
marco@portatilinux:~$ exit
浏览器窗口仍以用户 marco 的身份打开...在另一个终端上:
marco@portatilinux:~$ ps -aux |grep marco |grep root
root 5056 0.0 0.0 22880 4756 ? S 13:34 0:00 sudo -u marco firefox
如您所见,在我关闭浏览器窗口之前,启动 firefox 的进程仍以 root 用户身份处于活动状态。可能这是预期的行为,没关系,但可以肯定的是,我只有几个问题:
问题:
- 这可能是整个系统的安全漏洞吗(如果有人使用浏览器漏洞利用,如果我以这种方式运行浏览器,他是否更容易对 root 进行特权提升?)
- 有什么办法可以让这个 sudo -u 进程死掉但让浏览器进程保持活动状态?(如果我终止进程浏览器窗口与他一起死)
我只是问,因为我不想制造一个更糟糕的安全漏洞,试图为我的系统做一些更好的事情。
我希望一切都清楚。
谢谢
马可
1:
sudo
是setuid root,否则无法完成工作。所以它总是以root身份开始,它在进程列表中显示为root拥有并不奇怪。sudo
在您的情况下,在生成子进程之前删除特权firefox
。所以root权限完全保留在父进程中,实际上只是在等待firefox
完成。我看不到在子进程中利用它的可能性。sudo
一直以这种方式工作并进行广泛的检查以避免滥用root权限的可能性。当然,您永远不能排除软件中存在错误和潜在漏洞的可能性,但这极不可能。鉴于 的流行sudo
,可能已经发现了潜在的漏洞利用。2:当您键入时
sudo -u marco firefox &
,您实际上是sudo
在后台运行,并且sudo
本身firefox
在前台运行(从它的角度来看)并等待它完成。sudo
如果您导致firefox
实际在后台运行,您可以摆脱父进程 - 然后父sudo
进程将立即完成。而不是运行
sudo -u marco firefox &
编写这样的脚本:例如调用脚本
run_firefox
并将其放在/home/marco
目录中。然后运行:(最后sudo -u marco /home/marco/run_firefox
没有&
)。如果您检查ps
,则该sudo
过程将不存在。