给特定用户权限,使用+w符号允许其向文件夹中写入内容。

我知道我可以像这样为所有者/组/其他人分配写入权限:
chmod u+w myfolder

我能在这里指定具体的用户吗?就像这样:

chmod username u+w myfolder

3我觉得这是不可能的。你为什么不直接把用户添加到群组中呢? - Emil
5个回答

你可以使用setfacl命令:
setfacl -m u:username:rwx myfolder

这将为特定用户设置权限,而不更改目录的所有权。

请查看man page以获取更多详细信息和示例。

注意:

  • setfacl设置文件 ACL(访问控制列表) 的简称

  • 如果你想递归地应用到所有子目录:像这样添加 -R 标志:

    setfacl -R -m u:username:rwx myfolder
    

13完美的答案!在CentOS(yum -y install acl)和FreeBSD上也可以使用setfacl - Viet
9只是一条注释:setfacl = 设置文件ACL,ACL = 访问控制列表,因此简称为"setFacl" - 更容易记住的方式。 - Yawar Murtaza
28如果你想将其递归应用于所有子目录:像这样添加 -R 标志:setfacl -R -m u:username:rwx myfolder - Jose A
给新用户授权的最简单方法 - Rajesh Mbm
1有没有办法在操作多个文件或递归时,给用户授予rw权限,而不改变任何现有的x权限? - Qi Fan
没问题,只需在上述命令中省略掉x即可。 - DrG
这比'chown'和'chmod'命令要安全得多,如果你还在学习Linux发行版的使用技巧,这些命令很容易导致服务器崩溃。 - Wachaga Mwaura
@DrG确实会取消x标志!我尝试了一下,失去了对该目录和所有子目录的访问权,显然需要x标志才能访问它们。 - PhillipM
这个方法对于新创建的文件也适用吗,还是每次创建新文件都需要重新应用权限? - Eliezer Berlin
2我收到“不支持的操作”。 - Wassadamo
1如果您收到“操作不受支持”错误信息,这很可能是由于外部挂载点未使用ACL支持进行挂载。请在fstab中添加acl选项并重新挂载。 - Ganesh Krishnan

如果你想更改拥有此文件或目录(文件夹)的用户,你将需要使用命令chown。例如,如果你运行
sudo chown username: myfolder

用户拥有“myfolder”的用户名将是username。然后您可以执行操作。
sudo chmod u+w myfolder

给用户名为user添加写入权限。

但如果你想将此用户添加到与"myfolder"相关联的组中,可以运行以下命令

sudo usermod -a -G groupname username

然后执行
sudo chmod g+w myfolder

给该组添加写入权限。

2有一种方法可以让两个用户都能够访问该文件夹,而不需要创建一个组;这是在这个问题的答案中提到的一个建议:superuser.com/a/235398/191720。 - Luan Nico
1我可以不用 sudo 来做这个吗? - a06e
1@becko:如果你切换到root shell,你就可以这样做。 - Charo
1@Charo 我的意思是不需要root权限。 - a06e
@becko:要更改与用户或组关联的权限,您必须具有根权限。 - Charo
+1 对于 chmod g+w myfolder。这就是我一直缺少的东西。 - Arda
为什么在用户名后面有一个冒号? - AER
1在第一条命令中,如果username后面跟着冒号,那么所属组也会变成username(如果没有冒号,则所属组不会改变)。 - Charo
你可以添加 -R 选项来进行递归操作。要获取更多选项,请输入 chown --help。 - Rahal Kanishka
请问“groupname”是指一个已经存在的组名吗?我们如何查看它?我们如何查看其中的成员?还是说我需要创建它?如果我只想将某人添加到该组的一个目录中,会影响与该组相关的所有其他权限吗? - Kvothe

不,这是不可能的。您只能使用

更改文件的所有者。

[sudo] chown username: foldername

或者您可以将用户添加到拥有该文件的组中。
usermod -a -G {group-name} username

1useradd -G {group-name} username 告诉我该用户名已经存在。 - Erdal G.
4我尝试了这个,但我的用户仍然无法写入那个文件夹。 - Sonic Soul

如果你想将其递归应用到所有子目录中:像这样添加-R标志。
setfacl -R -m u:username:rwx myfolder

这对于多个驱动器不起作用。 - undefined

在Ubuntu中递归地(包括文件夹及其所有子文件夹)为特定用户授予权限:
sudo chown -R <username>: <folderName>