据我了解,setuid位意味着任何可以执行文件的用户都将其作为文件所有者执行。是否可以使用ACL或其他方式,使仅一部分用户列表以文件所有者的身份执行文件,而其他所有人都以自己的身份执行文件?
我认为它是的轻巧替代品sudo
。还是我必须为此使用sudo
(或su
)?
这不是您想要的方式,如果一个用户执行文件,则执行setuid,但是如果另一用户执行文件,则不执行setuid。setuid位不包括在访问控制列表中。为文件打开或关闭。
您可以部分实现自己的目标。您只能允许某些用户执行setuid文件,但是完全禁止其他用户执行该文件。
例如,考虑虚拟的“ privileged_command”程序。如果要将其设置为setuid,但仅允许adm组的成员通过acl运行它,则可以通过以下方式执行此操作:
$ chown root.root privileged_command
$ chmod 4000 privileged_command
$ ls -l privileged_command
---S------ 1 root root 152104 Nov 17 21:15 privileged_command
$ setfacl -m g:adm:rx privileged_command
这是一个非常简单的示例,并且仅具有组权限就可以实现。但是,您可以继续使用setfacl来创建一组可以执行或不能执行该程序的用户/组。唯一的问题是,每个能够运行该命令的人都将运行它setuid。其他任何人都只会获得拒绝权限,根本无法执行它。
这与我能想到的非常接近。话虽这么说,您要问的可能是一个坏主意™。授予额外特权的最佳实践是针对那些有权行使这些特权的用户,只有当他们打算以该特权行事时,他们才能主动担任该特权。这是sudo的全部目的。根据执行命令的人的不同,使某些命令自动以不同的权限执行操作是导致意外滥用的秘诀。这就是为什么您通常不总是一直以root用户身份登录的原因。
同样,以这种方式使用ACL也是以后出现安全漏洞的秘诀。ACL很少使用,甚至很少需要。在这种情况下,使用它们来控制谁可以运行程序setuid,尚不清楚谁拥有什么特权,没有中央文件或存储库显示谁拥有什么权限,或哪些ACL条件针对哪些文件。它可能很快成为行政噩梦。
我不会说永远不会有使用ACL的地方,但是我可以依靠很多未使用的手指来指望一只手,这是我看到令人信服的案例证明这是一个好主意的次数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句