我需要帮助来了解如何在 Ubuntu 中向组授予写权限。我以 root 身份登录,并且拥有www-data:www-data
和ftpuser:ftpuser
( user:group
)。我使用以下命令将添加到组ftpuser
中www-data
:
usermod -a -G www-data ftpuser
现在我的www-data
小组有两个用户。
然后我使用以下命令创建该组www-data
,即文件夹的所有者/var/www
:
chgrp -R www-data /var/www
我仍然无法让组成员写入该文件夹(尽管该组拥有该文件夹),除非我授予该组的写入权限。现在根据这最佳答案我还需要设置目录使用的权限sudo chmod -R 770 /path/to/the/directory
,这让我很困惑。
如果用户是目录的所有者,为什么他不能写入该目录?组用户可以授予组对其拥有的文件夹的写入权限吗?命令中定义的组在哪里sudo chmod -R 770 /path/to/the/directory
?这不会向所有用户授予递归权限吗?
答案1
尽管该集团拥有它
不,从权限owner
适用的意义上来说,组不拥有文件。所有者权限仅适用于所有者 - 用户;组权限适用于指定的组。
如果用户是目录的所有者,为什么他不能写入该目录?
他可以,但就ftpuser
你的情况来说他不是主人。
最有可能的是,因为您没有明确说明:root
或者是文件的www-data
所有者,并且是该组的成员。/var/www
ftpuser
www-data
即使用户www-data
和组www-data
具有相同的名称,对于操作系统来说,它们也是不同的实体。
组内的用户可以授予组对其自己拥有的文件夹的写权限吗?
再次强调:文件夹不属于任何组。如果该组具有写入权限,则该组的任何成员都可以更改该对象的权限。
命令中定义的组在哪里
sudo chmod -R 770 /path/to/the/directory
第二个7
是指群组权限(是、和7
的组合)。read
write
execute
这不会向所有用户提供递归权限吗?
它将分配(递归):
read
、write
和execute
所有者(第一个7
)read
,,write
并且execute
对于组(第二7
)- 其他用户无权限(最后
0
)
答案2
对现有文件具有写权限的组共享的目录
所有用户都应是 www-data 组的成员。您可以使用以下方式添加他们
usermod -a -G www-data user1 usermod -a -G www-data user2 ...
可以使用一系列命令授予组 www-data 对文件夹及其所有包含文件的写权限:
chgrp -R www-data /var/www chmod -R g+ws /var/www
所有新文件和目录都将分配有组 www-data 并可由该组成员写入。
新文件的权限
大多数 Linux 系统上的默认 umask 是 022,这意味着如果 user1 在 /var/www 下创建文件或目录,则该文件只有 user1 可“编辑”,但组 www-data 可读。
如果这是预期的行为,那么你应该在这里停止。
具有写权限的组共享的目录
您应该验证系统上是否启用了扩展 ACL。您可以查看 /etc/fstab 并查找类似以下内容: 检查后,您需要为目录提供扩展 ACL 参数。
/dev/sda5 / ext4 acl,.....
您将使用以下命令添加 ACL,以允许在 /var/www 文件夹下创建的新文件也可由 www-data 组写入:
setfacl -R -b -k -d -m g:www-data:rwx --mask $2
在这种情况下,如果用户 1 在 /var/www 下创建文件或文件夹,则用户 2 将能够写入/删除。
每个新文件或目录都具有权限 rw-rw-???。问号是您为其他文件或目录设置的。
如何验证权限
使用此命令:
getfacl /var/www
输出应该是这样的:
# file: /var/www # owner: www-data # group: www-data # flags: -s- user::rwx group::rwx other::--- default:user::rwx default:group::rwx default:group:www-data:rwx default:mask::rwx default:other::---
文件夹 /var/www 的默认权限为:drwxrws---