我很想使用
# chmod u+s /usr/bin/updatedb
能够在任何地方、任何地方运行它。有什么理由我不应该吗?
我的意思是,它是否会增加我系统的不安全性,因为只有 root 用户可以使用updatedb
,而每个人都可以使用locate
?
我能想到的主要原因是,在我所知道的任何发行版中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
)。updatedb
在添加或删除文件时运行。这可能已经存在(我不知道),或者您可以使用inotifywait
. 只需确保两件事:
updatedb
。updatedb
每个文件更改运行一个,因为那样您最终可能会背靠背运行数千个。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句