在有人将这个问题标记为重复之前,我想强调一下,我想了解一些额外的信息......
我找到了一种方法为目录中创建的所有文件设置默认文件权限
如果我将此过程应用于目录,my_dir
则将在其中创建的所有文件和子目录my_dir
都将具有正确的权限。但是,如果我在外部创建一个文件my_dir
,然后将其复制或移动到内部my_dir
,则它将不具有 中定义的权限my_dir
。
所以我想知道是否有一种方法可以修复目录及其内容对该目录内所有文件的权限,无论文件是在哪里创建的。
最好的解决方案是用户无需做任何特殊事情的解决方案。简单的点击、拖动、复制cp
、 ……但与左右mv
无关。chmod
因此,像这样的答案这并不是我真正想要的,因为用户在任何想要复制或移动文件的时候都必须做一些不寻常的事情。
PS:我之所以要这样做是因为我与与我在同一组的同事共享一些文件夹。我希望该组中的任何人都有权访问wrx
共享文件夹中包含的任何文件,即使这些文件是在文件夹外部创建的。
答案1
使用您的用户的文件权限组。您的管理员请求在 中建立一个新组/etc/groups
,并将所有团队用户添加到该组。更改umask
用户 shell 配置文件中的定义以允许同一组的成员进行访问。
答案2
cp
为、等编写包装脚本mv
,以执行复制后的操作chmod
。
答案3
如果 ACL 无法解决问题,则后备解决方案是使用 API inotify
。这允许程序监视一个或多个目录中的事件并对其采取行动。
像这样的东西,包含在启动时以 root 身份启动的脚本中,将帮助您上路:
TARGET_DIR='/path/to/directory'
inotifywait --monitor --recursive --quiet --event close_write,moved_to --format '%w/%f' "$TARGET_DIR" |
while read FILE
do
chmod go=u,o-w "$FILE"
# chown someone:somegroup "$FILE"
logger -t inotify "Tickled $FILE"
done