我正在使用 Debian。我有以下三个目录:
- /home/Server1/文件
- /home/Server2/文件
- /home/Server3/文件
我有这些用户:
- 用户1
- 用户2
- 用户3
我想要做的:
让特定用户对特定目录(以及其中的所有内容)拥有完全访问权限(创建、写入、编辑)
[user_name][accessible_directories]
- [用户 1][服务器 1, 服务器 2, 服务器 3]
- [用户2][服务器1,服务器3]
- [用户 3][服务器 2]
我不想把事情搞砸,所以我真的需要有经验的用户的帮助。你能写一个简短的分步教程吗?
- 创建用户1、用户2、用户3。
- 输入命令:...
- 输入命令:...
- ETC。
答案1
您有几个选择:ACL,或精心设计的组,或两者的组合。
精心设计的组可能是其中最不脆弱的(如果 root 接触文件,ACL 可能不会应用)。
如果你反转你的映射,你会得到:
- 服务器1:用户1,用户2
- 服务器2:用户1,用户3
- 服务器3:用户1,用户2
因此我们只需将每个目录映射到一个组。
# create groups
groupadd server1
groupadd server2
groupadd server3
# create users
useradd -G server1,server2,server3 -m user1
useradd -G server1,server3 -m user2
useradd -G server2 -m user3
# create directories
mkdir -p /home/Server{1,2,3}/files
chgrp server1 /home/Server1/files
chgrp server2 /home/Server2/files
chgrp server3 /home/Server3/files
# set permissions on the directories
chmod u=rwx,g=rwxS,o=x /home/Server*/files
setgid (g=S) 位在这里非常关键。它将确保给定目录中的新文件与现有文件被赋予相同的组。
上述内容还有最后一个注意事项:如果您的用户的 umask 为 0002,而不是通用的 0022,则效果最佳。如果他们的 umask 更严格(例如 0077),则会出现问题。在这种情况下,ACL 通常也会出现问题。