在 updateb 上使用 root 权限设置 setuid 有什么危险吗?

皮埃尔-安托万·纪尧姆

我很想使用

# chmod u+s /usr/bin/updatedb

能够在任何地方、任何地方运行它。有什么理由我不应该吗?

我的意思是,它是否会增加我系统的不安全性,因为只有 root 用户可以使用updatedb,而每个人都可以使用locate

0b0

我能想到的主要原因是,在我所知道的任何发行版updatedb都没有 setuid,所以它可能没有像通常的 setuid 程序那样受到严格审查。Evenlocate在 Arch Linux 上setgid

$ stat --format %A $(which locate)
-rwxr-sr-x

这意味着它与文件所有者一起执行

$ stat --format %G $(which locate)
locate

所以它作为组“定位”执行,但作为原始用户。这最大限度地减少了“定位”组可以访问的攻击面,这可能只是定位数据库。

setuid 和 setgid 很少是你作为用户需要改变自己的东西(我在 10 多年的 Linux 使用中从来不需要)。如果需要,包中的可执行文件在安装时是 setuid 或 setgid,例如locate上面或可以说是最著名的 setuid 程序,sudo

$ stat --format %A $(which sudo)
-rwsr-xr-x

updatedb通常由 cron 作业运行。如果这对您来说不够频繁,您有几种选择:

  • 只要您需要最新的文件列表,就运行sudo updatedb(无需su)。
  • 增加 cron 作业的频率。这可能会在安装 cron 作业的软件包的下一次更新中被覆盖,但另一方面,它可能只会添加另一个 cron 作业。
  • 添加另一个频率更高的 cron 作业。
  • 以 root 身份运行服务以查看重要目录的更改并updatedb在添加或删除文件时运行这可能已经存在(我不知道),或者您可以使用inotifywait. 只需确保两件事:
    1. 不要观察整个磁盘的变化,因为它会一直运行updatedb
    2. 不要为updatedb 每个文件更改运行一个,因为那样您最终可能会背靠背运行数千个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用setuid更改root的密码

如果程序设置了setuid位,为什么/ proc / self中的文件最终被root拥有?

使用consolehelper时出现“权限不足”和“ userhelper必须为setuid root”错误/警告

如何从root用户使用setuid()成为用户,并有可能稍后再次成为root用户?

root拥有setuid位的程序

root必须是setuid root

bash不能通过setuid程序获得root权限

为什么setuid()无法与非root用户一起使用?

为什么ping需要setuid权限?

设置setuid VS赋予执行权限

Linux:如果既未设置SETUID也未设置功能,为什么能使用ping?

在Mac上的sudo:/ usr / bin / sudo必须由uid 0拥有并设置setuid位

为什么没有将setuid位设置为'nethogs'?

如何设置没有root访问权限的路径变量?

为什么使用 capset 后 setuid 失败?

即使设置了 setuid 位并提供了 o+rx,也无法以所有者权限运行脚本

正在获取消息“ sudo:必须为setuid root”,但是sudo已由root拥有

没有权限使用 psql 的 root

具有读/写功能的Linux Setuid特殊权限标志

使用 git 为文件设置位“setuid”并在存储库上存储更改

是否可以在没有root访问权限的情况下在Linux上使用packet_mmap?

sudo必须由uid 0拥有,并设置了setuid位

sudo必须由uid 0拥有,并设置了setuid位

开发和部署将使用setuid以root身份运行的应用程序?

CentOS错误-sudo:有效uid不为0,sudo是否安装了setuid root?

sudo:有效uid不为0,sudo是否已安装setuid root?

正确使用setuid位

如何使用非root用户权限构建docker以使用pipenv设置python应用程序?

setuid为什么不能与mount一起使用?