sudo chown-防止../

sudo chown-防止../

需要允许用户使用 sudo 更改特定目录下文件的权限。以下方法可行:

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(Red Hat)

答案1

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.

哦,对了。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。

答案2

尝试制作一个“chroot 替换”脚本,该脚本在执行 chown() 操作之前验证输入。然后将此脚本而不是 /bin/chown 添加到 sudoers 文件中。然后,您可以根据需要为用户设置“chown”别名。

另一方面,您确定您的用户需要使用 root 权限执行 chown 吗?也许目录上的 sgid 或 suid 位可以解决您的问题?

相关内容