如何设置public目录权限:sudo组可读写、所有用户仅可读?
修改public目录权限的方案
要实现sudo组用户拥有读写权限,其他用户仅拥有读取权限的目标,我们可以通过以下步骤操作:
1. 确保目录的所属组为sudo组
首先需要把public目录的所属组设置为sudo,这样sudo组的用户才能继承组权限:
sudo chgrp sudo public/
如果需要连同目录内的所有子文件、子目录一起修改所属组,加上-R参数(递归操作):
sudo chgrp -R sudo public/
2. 设置目录权限
这里需要注意:目录的执行权限(x)是用户进入目录的前提,如果只给其他用户r权限,他们连目录都进不去,更无法读取里面的文件。所以我们需要给其他用户配置rx权限(读取+进入),sudo组配置rwx权限(读取+写入+进入):
符号模式(直观易懂,推荐)
sudo chmod g=rwx,o=rx public/
如果需要递归修改所有内容,同时区分文件和目录的权限(避免给普通文件加上不必要的执行权限),可以用大写X(仅给目录或已有执行权限的文件添加执行权限):
sudo chmod -R g=rwx,o=rx,u=rwX public/
解释:
g=rwx:sudo组用户拥有读、写、执行权限o=rx:其他用户拥有读、执行权限(能进入目录并读取内容)u=rwX:保持目录所有者的读写权限,仅给目录添加执行权限
数字模式(简洁高效)
如果习惯用数字权限,对应的配置是775(所有者rwx,组rwx,其他rx):
sudo chmod 775 public/
递归修改的话:
sudo chmod -R 775 public/
⚠️ 注意:数字模式会统一修改所有者、组、其他用户的权限,如果原所有者权限不是rwx,这个命令会覆盖它,所以符号模式更灵活。
3. 验证权限设置
执行以下命令查看最终权限:
ls -ld public/
输出应该类似这样(重点看权限位和所属组):
drwxrwxr-x 2 your_user sudo 4096 Aug 20 10:00 public/
drwxrwxr-x:权限位对应所有者rwx,组rwx,其他rxsudo:目录的所属组为sudo组
额外提醒
- 如果
public是web服务器(如Nginx/Apache)的根目录,可能还需要确保服务进程的用户(比如www-data)拥有对应权限,但你的需求是sudo组用户有读写权限,所以按上述配置即可。 - 递归操作
-R要谨慎,确认目标目录下没有不需要修改权限的重要文件,避免误操作。
内容的提问来源于stack exchange,提问作者An0n
相关产品推荐
相关产品推荐

