Debian 12 配置多用户共享目录

共享思路

Linux 系统的 umask 权限掩码决定了用户新创建的文件和目录的默认权限。默认的 umask 一般为 022,这意味着:

  • 新建的目录权限:755(所有者可读/写/执行,组和其他可读/执行)
  • 新建的文件权限:644(所有者可读写,组和其他只读)

Linux 系统用户新建的目录或文件 (即执行 touchmkdir 等命令)的所有者和组分以下情况:

  • 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>