我有一个组manager
和一个用户user1
。
user1
将通过示例在网络服务器路径中创建一个目录/var/www/user1Project
。
如何允许组manager
在 拥有的任何目录中读写user1
?
我已经尝试将组添加manager
到user1
.但这并没有解决我的问题。组中的用户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
你可以走了