上一篇
场景引入:
小明刚入职一家IT公司,同事丢给他一台服务器账号:"这是测试机,你先用sudo
装个软件吧!" 结果输入密码后终端冷冰冰地提示:"user is not in the sudoers file" 😅 究竟什么是用户组?为什么权限管理能卡住新手脖子?今天我们就用"白话+实操"彻底讲透!
想象一家公司:
Linux通过用户组实现批量权限分配,
💡 核心作用:
mysql
组) 每个组有两个唯一标识:
developers
) 1001
) 用getent group
查看所有组:
$ getent group developers:x:1001:alice,bob # 组名:密码占位符:GID:成员列表
类型 | 特点 | 典型用途 |
---|---|---|
主组 (Primary) | 用户创建文件时默认归属的组 | 通常与用户名相同(如用户alice 的主组是alice ) |
附加组 (Supplementary) | 用户额外加入的组 | 赋予特殊权限(如加入sudo 组获得管理员权限) |
🔍 查看当前用户所属组:
$ groups # 输出类似:alice developers docker
# 创建新组(-r创建系统组) $ sudo groupadd -g 2001 developers # 删除组 $ sudo groupdel developers # 修改组名 $ sudo groupmod -n dev_team developers # 将用户加入组(需重新登录生效) $ sudo usermod -aG developers alice
# 查看某用户的组归属 $ id alice # 输出:uid=1001(alice) gid=1001(alice) groups=1001(alice),1002(developers) # 查找哪些用户在sudo组 $ grep 'sudo' /etc/group
# 错误示范!直接覆盖用户附加组(会移出原有组) $ sudo usermod -G developers alice # 缺少-a参数 # 正确做法:追加组而不影响原有权限 $ sudo usermod -aG developers alice
# 1. 创建共享组 $ sudo groupadd web_dev # 2. 设置目录权限(2750中的2是SETGID标志) $ sudo mkdir /project $ sudo chgrp web_dev /project $ sudo chmod 2770 /project # 新文件自动继承web_dev组 # 3. 添加团队成员 $ sudo usermod -aG web_dev alice $ sudo usermod -aG web_dev bob
# 1. 创建审计组 $ sudo groupadd log_audit # 2. 配置sudoers(visudo安全编辑) %log_audit ALL=(root) /usr/bin/less /var/log/secure*, !/bin/bash # 3. 解释:允许该组成员仅用less查看安全日志,禁止获取shell
❓ Q:用户已加入组,但权限不生效?
newgrp
命令临时切换组: $ newgrp developers # 启动子shell应用新组权限
❓ Q:删除组时报"group is primary group for user"?
$ sudo usermod -g new_primary_group user
auditd
监控/etc/group
变更 chmod 777
,组权限优于全局开放 (本文操作基于2025年主流Linux发行版测试验证)
下次当你看到"Permission denied"时,希望你会心一笑:原来是组权限在守护系统啊!🛡️💻
本文由 钦碧春 于2025-08-02发表在【云服务器提供商】,文中图片由(钦碧春)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/515178.html
发表评论