我想设置一个目录,其中所有新文件和目录都有一定的访问掩码,并且目录中也设置了粘滞位(t one,这限制了删除这些目录中的文件).
对于第一部分,我的理解是我需要为父目录设置默认ACL.但是,新目录不会从父级继承t位.因此,非所有者可以删除子目录中的文件.我能解决这个问题吗?
解决方法:
这是一个允许组成员acltest创建的配置
并禁止删除和重命名文件时修改组文件
除了他们的主人和“其他人”,没有.使用用户名,列弗和
假设umask为022:
groupadd acltest
usermod -a -G acltest lev
注销root帐户和lev帐户.登录并成为root或使用sudo:
mkdir /tmp/acltest
chown root:acltest /tmp/acltest
chmod 0770 /tmp/acltest
chmod g+s /tmp/acltest
chmod +t /tmp/acltest
setfacl -d -m g:acltest:rwx /tmp/acltest
setfacl -m g:acltest:rwx /tmp/acltest
ACL无法设置粘滞位,粘滞位不会复制到子目录.但是,您可以使用inotify或类似软件来检测文件系统中的更改,例如新目录,然后进行相应的反应.
例如,在Debian中:
apt-get install inotify-tools
然后为inotify创建一个脚本,例如/usr/local/sbin/set_sticky.sh.
#!/usr/bin/env bash
inotifywait -m -r -e create /tmp/acltest |
while read path event file; do
case "$event" in
*ISDIR*)
chmod +t $path$file
;;
esac
done
授予root用户执行权限:chmod 0700 /usr/local/sbin/set_sticky.sh.然后在启动时从/etc/rc.local或任何适合的RC文件运行它:
/usr/local/sbin/set_sticky.sh &
当然,在这个例子中,/ tmp / acltest应该在重启时消失.否则,这应该像魅力一样.
标签:acl,linux,permissions
来源: https://codeday.me/bug/20190810/1640160.html