sudo chown – 防止../

需要允许用户使用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位将解决您的问题?