Linux下一个目录让任何人创建的文件和目录任何人都能读写

在Linux下,要让一个目录中的所有文件和目录任何人都能读写,可以使用以下几种方法:

1. 使用 umask 和 setgid 位

通过设置目录的 setgid 位和配置合适的 umask,可以实现此目的。

1.1 设置目录的 setgid 位

首先,将目标目录的 setgid 位设置,使新创建的文件和目录继承目录的组:

chmod g+s /path/to/directory

1.2 设置 umask

配置 umask 使新文件和目录具有合适的权限。例如,可以将 umask 设置为 0002 以确保新文件具有 664 权限,新目录具有 775 权限。

如果是针对单个用户,可以在其 .bashrc.profile 文件中添加:

umask 0002

1.3 修改文件和目录的默认组

确保目录的组所有权是目标组,以便所有新文件和目录都继承该组:

chown :target_group /path/to/directory

2. 使用 ACL(访问控制列表)

如果需要更细粒度的权限控制,可以使用 ACL 来设置默认权限。

2.1 设置默认 ACL

设置目录的默认 ACL,以确保新创建的文件和目录具有所需的权限:

setfacl -d -m u::rwx,g::rwx,o::rx /path/to/directory
setfacl -d -m g:target_group:rwx /path/to/directory

这样,所有新创建的文件和目录将继承这些默认权限。

2.2 检查和调整现有文件的 ACL

为了确保现有文件和目录具有所需的权限,可以手动设置其 ACL:

setfacl -R -m u::rwx,g::rwx,o::rx /path/to/directory
setfacl -R -m g:target_group:rwx /path/to/directory

示例

假设目标目录是 /shared,目标组是 sharedgroup

# 创建组
sudo groupadd sharedgroup

# 更改目录的组
sudo chown :sharedgroup /shared

# 设置目录的 setgid 位
sudo chmod g+s /shared

# 设置 ACL
sudo setfacl -d -m u::rwx,g::rwx,o::rx /shared
sudo setfacl -d -m g:sharedgroup:rwx /shared

# 确保现有文件和目录具有正确的权限
sudo setfacl -R -m u::rwx,g::rwx,o::rx /shared
sudo setfacl -R -m g:sharedgroup:rwx /shared

这些步骤将确保在 /shared 目录下创建的文件和目录任何人都能读写,并且新创建的文件和目录会继承这些权限设置。

最后更新于