需要允许用户使用sudo在特定目录下chown文件。 这是诀窍:
user1 ALL= NOPASSWD: /bin/chown -[RPfchv] user2\:user2 /opt/some/path/[a-zA-Z0-9]*
但是,并不妨碍用户偷偷摸摸地做这样的事情:
[user1 @ rhel〜] sudo / bin / chown -v user2:user2 /opt/some/path/../../../etc/shadow
有什么办法来保护呢?
机器正在运行Linux(红帽)
sudo引入了固有的安全风险,一般不build议给予不太信任的用户。
为什么不简单地限制父目录的recursionchown?
sudoers主要使用globbing。 根据manpage,它不匹配/通配符。 在manpage中有更多的细节。
至于更先进的解决scheme,一个脚本应该做的伎俩。
[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.
啊对。 sudo包:
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
CentOS5。
尝试做一个“chrootreplace”脚本,在做chown()之前validationinput。 然后添加这个脚本而不是/ bin / chown到sudoers文件。 如果需要,您可以为用户设置“chown”别名。
另一方面,你确定你的用户需要用root权限来做chown吗? 也许在目录上的sid或suid位将解决您的问题?