AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1054727
Accepted
Marco Brenna
Marco Brenna
Asked: 2021-02-24 05:05:37 +0800 CST2021-02-24 05:05:37 +0800 CST 2021-02-24 05:05:37 +0800 CST

为什么 sudo -u 的父进程以 root 用户身份保留在 ps 中?有可能避免吗?如果不是这样安全吗?

  • 772

出于安全原因,我正在尝试使用 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 进程死掉但让浏览器进程保持活动状态?(如果我终止进程浏览器窗口与他一起死)

我只是问,因为我不想制造一个更糟糕的安全漏洞,试图为我的系统做一些更好的事情。

我希望一切都清楚。

谢谢

马可

ubuntu security
  • 1 1 个回答
  • 249 Views

1 个回答

  • Voted
  1. Best Answer
    raj
    2021-02-24T08:45:03+08:002021-02-24T08:45:03+08:00

    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 &编写这样的脚本:

    #!/bin/sh
    exec firefox &
    

    例如调用脚本run_firefox并将其放在/home/marco目录中。然后运行:(最后sudo -u marco /home/marco/run_firefox没有&)。如果您检查ps,则该sudo过程将不存在。

    • 2

相关问题

  • 无法通过 Ubuntu VPN 访问外部网络

  • ubuntu apt-get upgrade - 如何在 shell 中单击确定?

  • VirtualBox 上 Ubuntu 的访客优化技巧 [关闭]

  • 外部硬盘上的 virtualbox 虚拟硬盘驱动器(Vista 主机上的 ubuntu 客户机)

  • 如何在 Ubuntu 上挂载 LVM 分区?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve