在 Linux 服务器上,我需要从一组用户中删除 root 权限。但这些用户有正当理由能够使用“查找”实用程序根据文件名、修改日期和其他元数据搜索文件。
在服务器上,文件名不敏感,但文件内容可能。
我想使用 sudo 允许用户在服务器上的任何位置搜索文件。“查找”实用程序很棒,但它允许各种副作用,例如使用“-exec”生成任意命令。
我可以find
在我的限制下工作吗?
在 Linux 服务器上,我需要从一组用户中删除 root 权限。但这些用户有正当理由能够使用“查找”实用程序根据文件名、修改日期和其他元数据搜索文件。
在服务器上,文件名不敏感,但文件内容可能。
我想使用 sudo 允许用户在服务器上的任何位置搜索文件。“查找”实用程序很棒,但它允许各种副作用,例如使用“-exec”生成任意命令。
我可以find
在我的限制下工作吗?
根据
man 7 capabilities
这对我有用。(以 '#' 开头的行是 root,那些以 '$' 开头的行是非 root)在这种情况下,非 root 用户在
wheel
组中。鉴于功能授予的内容,它完全符合您的要求。我没有彻底检查是否
find
有一个功能可以让你读取文件中的字节,但是由于 Linux 中 setuid 检查的性质,像库 shim 攻击这样明显的东西LD_PRELOAD
不应该起作用,并且功能位没有得到由子进程继承(与原始 setuid 不同),这是另一个好处。请记住,您想要做的事情确实会引发与临时文件创建或访问有关的隐私问题,并且该程序可以用作安装竞争条件/特权升级尝试的基础(针对创建众所周知的文件名的程序但不要进行正确的安全检查)。
此外,一些编写不佳的应用程序可能依赖文件元数据或树结构作为传达含义或隐藏数据的一种方式。这可能会导致发布受限信息或泄露其他不为人知的特权文档(我知道通过默默无闻的安全性,但不幸的是,这是闭源供应商特别喜欢做的事情)。
因此,请注意并谨慎行事,并了解即使明显的事情不起作用,仍然存在与此相关的风险。
哦,我很想看看是否有人有概念证明攻击,它使用这种机制作为评论中特权升级的基础!
定位呢?
甚至可能slocate:
我会给用户适当的权限。
默认情况下,如果 umask 是
022
,则创建目录,以便每个人都可以列出和统计其中的文件。如果没有,您可以手动将目录的权限更改为按位或其旧权限,并且0555
:如果这些用户对该目录的所有父目录(例如,另一个用户的主目录)没有执行权限,则可能意味着您应该将第一个目录放在其他地方。
如果您只想让某些用户读取和执行该目录,您可以将其模式更改为
0750
,将这些用户放在一个组中,并将目录的组所有者更改为该组: