Linux 系统中 通过 用户组 管理用户
如何通过用户组和访问控制表 (ACL) 来管理用户.
新建两个用户:
olivia
nathan
新建两个用户组:
readers
editors
olivia 属于 editors 用户组, 而 Nathan 属于 readers 用户组.
reader 用户组 对 /DATA 目录 只有读的权限, 而 editors 用户组则对 /DATA 目录 同时有读和写的权限.
-
创建用户
创建两个用户, 用 useradd 命令创建, 并同时创建用户和属于他们的家目录, 之后设置密码.
sudo useradd -m olivia sudo useradd -m nathan
创建两个用户, 在 /home 目录, 多了两个 家目录.
之后, 设置密码:
sudo passwd olivia sudo passwd nathan
创建完成
创建用户组并添加用户
创建两个用户组, 并添加用户
addgroup readers
addgroup editors
在centos 中 使用 groupadd 命令
添加 用户 到 用户组. 用一下命令
sudo usermod -a -G readers nathan
将olivia 添加到 editors 用户组中:
sudo useradd -a -G editors olivia
给用户组 授予目录权限
假设 有 /READERS 且 允许 readers 用户组 的 所有成员 访问这个目录. 执行以下命令来更改目录所属用户组:
sudo chown -R :readers /READERS
收回目录所属用户组的写入权限:
sudo chmod -R g-w /READERS
收回其他用户对这个目录的访问权限(防止任何不在readers 组中的用户访问这个目录):
sudo chmoe -R o-x /READERS
只有目录所有着 (root) 和用户组 readers 中的用户可以访问 /READERS 中的文件:
假设你有目录 /EDITORS, 你需要给用户组 editors 里的成员 这个目录的读和写的权限.
sudo chown -R :editors /EDITORS sudo chmod -R g+w /EDITORS sudo chmod -R o-x /EDITORS
editors 用户组的所有成员都可以访问和修改 其中的文件.
除此之外 其他用户 (除了root) 无法访问 /EDITORS 中任何文件
缺点: 一次只能操作一个组和一个目录
使用访问控制表 (ACL) 就更加方便.
使用访问控制表(ACL)
复杂点, 假设有一目录 /DATA 并且 你想给 readers 用户组的成员读取权限, 并同时 给 editors 用户组的成员读和写的权限.
必须要用到 setfacl 命令. setfacl 命令可以为文件和文件夹设置一个访问控制表.
setfacl OPTION X:NAME:Y /DIRECTORY
其中 OPTION 是可选选项, X可以是 u (用户) 或是 g (用户组) , NAME 是 用户 或 用户组的名字, /DIRECTORY 是要用到的目录. 使用 -m 选项进行修改.
因此, 给readers 用户组 添加读取权限命令:
sudo setfacl -m g:readers:rx -R /DATA
赋予 editors 用户组 中任何成员读取权限, 同时保留 readors 用户组 只读权限.
更多的权限控制
使用访问控制表(ACL),你可以实现你所需的权限控制。你可以添加用户到用户组,并且灵活地控制这些用户组对每个目录的权限以达到你的需求。如果想了解上述工具的更多信息,可以执行下列的命令:
- man usradd
- man addgroup
- man usermod
- man sefacl
- man chown
- man chmod