我很想用
# chmod u+s /usr/bin/updatedb
能够在任何地方,任何地方运行它。我有什么理由不这样做吗?
我的意思是,它是否会增加我系统中的不安全感,只知道root用户可以使用updatedb
,而每个人都可以使用locate
?
答案 0 :(得分:0)
我能想到的主要原因是 updatedb
在我知道的任何发行版中都没有设置,所以它可能没有经过详细检查通常是setuid程序。甚至locate
在Arch Linux上只有 setgid :
$ stat --format %A $(which locate)
-rwxr-sr-x
这意味着它是使用文件所有者的组执行的:
$ stat --format %G $(which locate)
locate
因此,它作为群组执行"定位",但作为原始用户。这会将攻击面最小化为"定位&#34 ; group有权访问,可能只是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
,因为这样你最终可能会连续运行数千个。