为特定用户添加访问特定目录的权限

为特定用户添加访问特定目录的权限

我正在使用 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 通常也会出现问题。

相关内容