允许组在特定用户拥有的文件夹中读写

允许组在特定用户拥有的文件夹中读写

我有一个组manager和一个用户user1

user1将通过示例在网络服务器路径中创建一个目录/var/www/user1Project

如何允许组manager在 拥有的任何目录中读写user1

我已经尝试将组添加manageruser1.但这并没有解决我的问题。组中的用户manager不允许写入user1Project。我不知道为什么。

答案1

这是非常特殊的,您无法通过使用 unixoid 系统的遗留权限架构来管理它。最接近您意图的方法是使用ACL。发出以下命令(可以选择以超级用户身份):

setfacl -d -R -m g:manager:rwx /dir/of/user1
setfacl -R -m g:manager:rwx /dir/of/user1

第一个命令设置目录的默认权限,以便它们应用于新创建的文件(由 user1)。第二个命令递归地设置文件夹和文件的实际权限。

请注意,ACL 基础结构不适用于 Apache Web 服务器。 Apache 只关心遗留权限(用户/组/其他权限)。因此,在网络文件夹内,每个文件/文件夹都必须位于该www-data组中,并且每个文件必须至少具有www-data.文件夹应具有www-data索引搜索的执行权限。

更新:

要强制目录中新创建的文件继承该目录的组,请设置目录的 gid 位:

chmod g+s /web/directory

里面新创建的文件/web/directory将继承该组/web/directory

答案2

除了成为该组的一部分之外,您还必须设置目录的写入权限:

 chmod 770 /var/www/user1Project/example_dir

(如果您希望全世界都具有读取权限,请使用 775,这在 Web 目录上更有可能)。

还要意识到用户管理员在添加到组后必须重新登录user1

如果您希望 group 创建的每个目录user1都可由 group 的组成员写入user1,您可以设置:

umask 0002

这将导致创建具有权限的目录rwxrwxr-x

答案3

将目录组设置为管理员:

chgrp -hR manager /your/target/directory/path

然后,将 set-GID-bit 添加到您的权限中,这样如果user1发生任何更改,该组将能够再次写入:

chmod g+s /your/target/directory/path

答案4

setfacl看起来最适合您。确保已acl utilities安装。检查它是否已经安装

在 Redhat 基础系统中执行以下操作:

yum list acl

在基于 Debian 的系统中

dpkg -l acl

如果尚未安装,对于 Redhat 基础系统,请执行以下操作:

yum install acl.x86_64 # Or use dnf for later versions of Fedora and so

在基于 Debian 的系统中

dpkg install acl

在文件系统上启用 acl,我修改 /etc/fstab

UUID=your_uuid_here   /partition    filesystemtype   options,acl   0   2

注意,acl是唯一添加的部分,现在重新挂载分区

mount -o remount /your_partition_here

(这完成了设置部分,如果acl已经安装,您可能不会执行此操作)。


应用 setfacl

setfacl -m g:manager:rw file /var/www/user1Project #you need root privileges

你可以走了

相关内容