需要允许用户使用 sudo chown 特定目录下的文件。这是诀窍:
user1 ALL= NOPASSWD: /bin/chown -[RPfchv] user2\:user2 /opt/some/path/[a-zA-Z0-9]*
Run Code Online (Sandbox Code Playgroud)
但是,并不能阻止用户偷偷摸摸地做以下事情:
[user1@rhel ~] sudo /bin/chown -v user2:user2 /opt/some/path/../../../etc/shadow
有什么办法可以防止这种情况吗?
机器正在运行 Linux (Red Hat)
sudo 引入了固有的安全风险,通常不建议将其提供给信任度不高的用户。
为什么不简单地限制为父目录的递归 chown?
sudoers 主要使用通配符。根据联机帮助页,它与通配符上的 / 不匹配。联机帮助页中有更多详细信息。
至于更高级的解决方案,脚本应该可以解决问题。
[root@server wmoore]# egrep '^wmoore' /etc/sudoers
wmoore ALL= NOPASSWD: /bin/chown -[RPfchv] wmoore\:wmoore /home/wmoore/[a-zA-Z0-9]*
[wmoore@server ~]$ sudo -l
User wmoore may run the following commands on this host:
(root) NOPASSWD: /bin/chown -[RPfchv] wmoore:wmoore /home/wmoore/[a-zA-Z0-9]*
[wmoore@server ~]$ sudo chown -R wmoore:wmoore /home/wmoore/../../tmp/test
Sorry, user wmoore is not allowed to execute '/bin/chown -R wmoore:wmoore /home/wmoore/../../tmp/test' as root on server.
Run Code Online (Sandbox Code Playgroud)
啊对。须藤包:
Name : sudo Relocations: (not relocatable)
Version : 1.6.9p17 Vendor: CentOS
Release : 3.el5_3.1 Build Date: Tue 24 Mar 2009 07:55:42 PM EDT
Run Code Online (Sandbox Code Playgroud)
CentOS5。