安装 aclutils

安装 aclutils

我创建了一个名为 的文件夹/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,我似乎没有在我的挂载选项中配置它,并且它正在工作)

相关内容