如何设置 Linux 计算机,以便每个拥有本地或 LDAP 帐户的用户都可以使用相同的数据分区。
我需要以下行为:
每个用户都可以
1. 创建文件夹/文件
2. 仅删除自己创建的文件/文件夹
3. 读取/执行所有用户的所有文件
对于拥有本地帐户的用户,我这样做:
sudo mkdir /media/data
sudo bash -c 'echo /dev/sdb1 /media/data ext4 defaults 0 0 >> /etc/fstab'
sudo mount -a
sudo chown :users /media/data
sudo chmod g+rw /media/data
对应于
# create a folder to mount data partition
# create fstab entry to mount data partition (/dev/sdb1) into that folder
# mount folder
# assign group 'users' to parent folder
# give group read write permissions
剩下唯一要做的事情就是手动将每个本地用户添加到用户组:
sudo adduser myUser users
现在我们将 LDAP 添加到机器中。有人知道如何保持所需的行为,而不必手动将每个 LDAP 用户(太多)分配给用户组吗?
答案1
您可以根据需要(动态地)pam_group
将用户添加到users
组中。(虽然这超出了您的问题范围,但如果您将其与pam_mkhome
创建新用户的主目录结合起来,您就可以让系统几乎实现自我管理。)
这PAM 子系统(可插入式身份验证模块)负责身份验证和授权。它具有极好的可扩展性(因此有些复杂),甚至可以运行 shell 脚本来验证某人的登录。在这种情况下,我们只需将用户组添加users
到每个登录会话中即可。
您尚未指定您使用的是哪个 Linux 发行版,因此我将给出一个 Debian 的示例。我假设您能够将其映射到您的场景中。
打开 root shell 并让它保持打开状态,直到你知道这有效。
破坏 PAM 可能会阻止任何人或任何事物登录甚至运行
su
/sudo
。您可能需要此 root shell 来撤消破坏的更改。pam_group
通过添加此规则进行配置/etc/security/group.conf
# All services, all ttys, all users, any time *; *; *; Al; users
配置 PAM“身份验证”堆栈以使用
pam_group
。编辑文件/etc/pam.d/common-auth
并在文件末尾添加此行。在 Debian 上,我在以下代码块后面添加了它pam-auth-update
auth optional pam_group.so
测试登录(本地或 LDAP),并检查是否
id
显示users
在您的组列表中。如果没有,请查看末尾
/var/log/auth.log
以查看 PAM 报告了什么错误消息。
答案2
由于您不想使用组,因此常规 Linux 文件权限的唯一选项是使其可由others
(所有用户)写入:
chown root:root /media/data
chmod u=rwx,g=rwx,o=rwxt /media/data
这应用与目录相同的权限/tmp
并满足 1) 和 2)。
3) 由用户决定,但将 umask 设置为 即可022
,这是大多数 Linux 发行版的默认设置。
答案3
您正在描述/var/tmp
。