我不知道这是否可能,所以我需要询问。我想允许用户创建单个文件(标志文件),但只能创建该文件。
由于我将该用户的父目录设为只读,因此用户当前无法(通过touch <filename>
)创建该文件。
由于该文件尚不存在,我无法授予写入权限chmod(例如chmod u+w <filename>
)。
有没有办法设置当前不存在的文件的权限在创建文件时生效?
我第一次研究并使用了 ACL,setfacl
但它似乎无法为不存在的文件预先创建条目。
背景:我做这个场景是为了测试目的。本质上,我想防止文件被修改,因此大多数文件都是只读的。但有时会创建某个文件,我想允许它具体的仅文件名/路径。
我在 Ubuntu 14.04 Linux 机器上执行此操作。
答案1
这比通过 ACL 可以获得更多控制。无法在目录上设置 ACL,仅当文件具有特定名称时才允许特定用户或组创建文件。
此问题最明显的解决方案是从一开始就创建有问题的文件并为其授予所需的权限。
如果这是不可能的,您可以创建一个程序来创建该文件,并通过以下方式授予用户在对该目录具有写权限的组中运行该程序的权限须藤。
bob = (bob : somegroup) touch /path/to/foo
然后用户bob
可以运行
sudo -g somegroup touch /path/to/foo