我可以以某种方式指定:
- 在一个目录仓库.git
- 全部文件将总是有
- 模式770和
- git:www-dat所有权:集团权?
答案1
权限 - 使用 ACL 选项所有权挂载 - 您正在查看 setuid 和 setgid 位...http://en.wikipedia.org/wiki/Setuid
以下是您正在尝试执行的操作的一个示例:http://www.linuxquestions.org/questions/linux-desktop-74/applying-default-permissions-for-newly-created-files-within-a-specific-folder-605129/
答案2
如果您可以强制在此目录中创建文件的应用程序以 umask 007 运行,并以无权限限制的方式创建文件,并以组www-data
作为其有效组或补充组运行,那么您需要做的就是chmod g+s repository.git
。否则,您不能这样做确切地您所要求的。
但是,如果您将目录本身设为所有者,git:www-data
并将模式设为 770,则只有git
用户和www-data
组才能访问目录中的文件。即使目录中的文件是世界可读的,其他用户也无法访问它们,除非它们在其他地方被硬链接,或者您将目录的描述符交给他们(这几乎必须故意这样做)。
接下来是使文件可组写入的问题。如果文件系统具有访问控制列表已启用。对于 ext2/ext3/ext4/reiserfs,请确保使用选项安装acl
。安装 ACL 命令行工具(例如,您需要acl
Debian 或 Ubuntu 上的软件包)。
chmod 770 repository.git
chown git:www-data repository.git
setfacl -m user:git:rwx -m group:www-data:rwx repository.git
setfacl -d -m user:git:rwx -m group:www-data:rwx repository.git
我认为这些文件最终不会是可执行文件,除非应用程序将它们创建为可执行文件。我不知道如何解决这个问题。