![安装 aclutils](https://linux22.com/image/145356/%E5%AE%89%E8%A3%85%20aclutils.png)
我创建了一个名为 的文件夹/home/projects
,为此我必须使用它,sudo mkdir /home/projects
因为它位于主文件夹内。
最初该文件夹具有以下权限:
drwxr-xr-x 4 root root 4096 Dec 29 16:53 projects
然后我添加了两个用户用户1和用户2到小组开发商。
然后我将该文件夹的所有者更改为用户1因为我读到有时如果您不是文件夹的所有者,更改可能不起作用。我用以下方法做到了这一点:
sudo chown -R user1 /home/projects
然后我更改了具有该文件夹所有权的组(同时以用户1)给开发者这样的:
sudo chgrp -R developers /home/projects
的输出ls -la
是:
drwxr-xr-x 4 user1 developers 4096 Dec 29 16:45 projects
两个用户都是该组的一部分,我检查过:
groups {username}
尽管有这一切,用户2仍然无法在其中创建文件夹或文件/home/projects
。用户可以进入该文件夹并查看其中的所有内容,但不能查看其他内容。
最奇怪的是用户2在 Ubuntu 突然开始给他权限被拒绝的错误之前,他能够在其中创建/上传和删除文件和文件夹/home/projects
大约一周。
如果我设置用户2作为文件夹的直接所有者,用户可以执行所有操作,但当然其他人则不能。
这里发生了什么?
编辑:用户 Zeta 建议我授予组w
访问权限,所以现在文件夹如下所示:
drwxrwxr-x 4 user1 developers 4096 Dec 29 16:45 projects
我没有得到权限被拒绝,而是收到以下错误:
mkdir /home/projects/New directory: received failure with description 'Failure'
操作系统是Gnu/Linux (Ubuntu 18.10)
答案1
只要您确信共享目录是最好的方法(版本控制,如 github,对于许多用例来说要优越得多),您就需要执行以下操作:
- 作为用户1,
chmod g+ws /home/projects
这将授予目录写入权限并设置 setgid 位,以便在该目录内创建的任何文件和目录将自动转到正确的组。
- 作为两个用户,添加
umask g+rwx
到 shell 启动文件中。这样,默认情况下,该组的所有成员都可以访问(并且可写)由一个用户创建的文件。
答案2
你没有组写,所以组写不了。
另请参阅文件访问控制列表 ( setfact
/ getfacl
)。设置默认组,以便将所有新文件/目录添加到组开发者中。
安装 aclutils
如果使用 Debian 或 Ubuntu 等衍生版本,则使用apt-get install acl
.您可能还需要激活您的文件系统(但也许不需要:我使用的是 ext4,我似乎没有在我的挂载选项中配置它,并且它正在工作)