Debian 12 配置多用户共享目录
共享思路
Linux 系统的 umask
权限掩码决定了用户新创建的文件和目录的默认权限。默认的 umask
一般为 022
,这意味着:
- 新建的目录权限:
755
(所有者可读/写/执行,组和其他可读/执行) - 新建的文件权限:
644
(所有者可读写,组和其他只读)
Linux 系统用户新建的目录或文件 (即执行 touch
、mkdir
等命令)的所有者和组分以下情况:
- 无
sudo
权限创建在普通目录下:所有者为当前用户,所有组为当前用户的主组 - 无
sudo
权限创建在 SGID 目录下:所有者为当前用户,所有组继承该 SGID 目录的组 - 使用
sudo
权限创建在普通目录下:所有者为root
,所有组为root
- 使用
sudo
权限创建在 SGID 目录下:所有者为root
,所有组继承该 SGID 目录的组
所以创建一个多用户共享目录只需要满足:
- 共享用户加入同一个共享组
- 共享目录设置 SGID(g+s),且目录所有组为共享组
- 确保共享用户创建的目录和文件具有组可写和执行权限(
umask
=002
)
修改系统或者用户的 umask
存在安全隐患,可以使用 acl
来指定目录,实现用户在目录下创建的目录和文件都具有组可写和执行权限功能。
安装 acl
更新 APT 软件包索引:
sudo apt update
安装 acl
:
sudo apt install -y acl
查看安装的版本:
setfacl -v
setfacl 2.3.1
配置共享目录
创建一个新组作为共享组:
sudo groupadd <group>
添加要参与共享的用户到共享组:
sudo usermod -aG <group> <user1>
sudo usermod -aG <group> <user2>
...
使组修改立即生效:
newgrp <group>
创建一个共享目录:
sudo mkdir -p <dir>
修改共享目录的权限为 775
:
sudo chmod 775 <dir>
修改共享目录的所属组为共享组:
sudo chgrp <group> <dir>
共享目录设置 SGID:
sudo chmod g+s <dir>
共享目录设置 ACL:
sudo setfacl -d -m g::rwx <dir>