这不是你的标准“权限如何工作”的问题!
我想答案可能会涉及ACL,但我不知道如何。
我已经搞乱了标准的权限,GUID,粘滞位等不起作用。
我想要的:用户将上传文件。 用户将能够更改文件的权限以允许执行。 但是一旦创build,用户将无法更改文件的内容。 用户将无法删除该文件。
请帮忙! 我已经把我的头发撕了好几个小时了!
编辑:
感谢您的答案,但到目前为止,他们似乎没有解决如何自动为新创build的文件这项工作。
可能的scheme
find -mtime -1 -exec chattr +i '{}' \+
第二种可能的解
inotifywait -m -e create --format %f .
现在我只需要弄清楚pipe道chattr。
你可以尝试使用“chattr”
例:
[email protected]:~$ sudo chattr +i plik.txt [email protected]:~$ rm plik.txt rm: remove write-protected regular empty file `plik.txt'? y rm: cannot remove `plik.txt': Operation not permitted [email protected]:~$ chattr -i plik.txt chattr: Operation not permitted while setting flags on plik.txt
使用属性
sudo chattr +i /path/to/file
删除“不可变”的标志
sudo chattr -i /path/to/file
这将阻止您更改文件的权限。 所以你需要一些方法来(以root用户身份)添加执行权限,或者根据用户的要求添加任何内容 而且,默认情况下不添加属性; 你必须要做些什么来做到这一点。
我会把这个作为一个练习留给读者。
SELinux可能是解决这个问题的一种方法 – 将所有用户的独特types与“能力降低”联系起来。 设置SELinux策略,允许在这个目录中创build文件,但不能修改等。理论上 – 应该可以工作。 请参阅Gentoo SELinux教程 ,特别是pice:
allow auditd_t <type>:file { <permission> };
然后查看更多可用的权限
使用inotify或您select的其他观察机制来查找和定位上传目录中的新文件,并将它们移动到一个新的目录中,对于这个目录,初始用户没有权限。