向Ubuntu中的一个文件夹中的多个用户授予写权限


80

有一个文件夹属于用户tomcat6:

drwxr-xr-x 2 tomcat6 tomcat6 69632 2011-05-06 03:43 document

我想允许另一个用户(管理员)对文档文件夹的写权限。这两个用户(tomcat6和ruser)不属于同一组。我尝试使用setfacl

sudo setfacl -m  u:ruser:rwx document

但这给了我setfacl: document: Operation not supported错误。请帮助我。

Answers:


143

有两种方法:将目录设置为可写的“世界”,或为两个用户创建一个新组,并使该目录可写至该组。

显然使它在世界范围内可写是一件坏事,因此第二种选择是可取的。

Linux中的用户可以属于多个组。在这种情况下,您想创建一个全新的组,我们称它为tomandruser

sudo groupadd tomandruser

现在该组已存在,将两个用户添加到其中:

sudo usermod -a -G tomandruser tomcat6
sudo usermod -a -G tomandruser ruser

现在剩下的就是在目录上设置权限了:

sudo chgrp -R tomandruser /path/to/the/directory
sudo chmod -R 770 /path/to/the/directory

现在,只有tomandruser组的成员才能读取,写入或执行目录中的任何内容。注意chmod和chgrp命令的-R参数:这告诉它们递归到目标目录的每个子目录中,并修改它找到的每个文件和目录。

您可能还希望将770更改为类似以下内容:774如果您希望其他人能够读取文件,775如果您希望其他人能够读取和执行文件,等等。组分配更改要等到用户注销并返回后才会生效在。

如果您还希望(也许愿意)由一个用户在目录内创建的新文件可以由该组中的其他人自动写入,则请参见此处


2
您可能还想为目录设置set-group-ID标志,以使新文件和子目录归正确的组自动拥有:sudo find /path/to/the/directory -type d -exec chmod 2770 '{}' \;
Marcello Nuccio 2012年

8
我会避免使用chmod 770、775或其他任何东西。搞砸了所有文件的权限。取而代之的是使用类似chmod -R g+w添加写权限的方式,而不用掩盖其他所有内容。
Christian Varga 2013年

2
如果用户在此处创建一个新文件(例如mysql by SELECT INTO OUTFILE),它将为其主要组设置权限(mysql在这种情况下),并且其他用户也无法访问该文件。如何解决这个问题?
Olexa

2
如果您想授予用户对文件夹的写访问权限而不更改文件夹的所有权,例如,您不想弄乱apache对public_html文件夹的权限,该怎么办?
codecowboy14年

2
注意: “组分配更改只有在用户注销并重新登录后才会生效。” 我错过了:)
弗拉基米尔·武卡纳克

3

例如脚本示出了示例,得到w (write)/ r (read) / x (execute)许可给定的文件夹路径/path/to/the/directoryUSER1USER2。如果您只想授予写权限,请替换rwxw


#!/bin/bash

# Block others and people in the same group to do read/write/execute on give folder:    
sudo chmod 700 /path/to/the/directory 

#Give read/write/execute access to USER1 on give folder:
sudo setfacl -R -m user:USER1:rwx  /path/to/the/directory 

#Give read/write/execute access to USER2 on give folder:
sudo setfacl -R -m user:USER2:rwx  /path/to/the/directory 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.