Linux用户与组管理详解

用户和组是Linux权限模型的核心。每个进程都关联一个用户ID(UID)和组ID(GID),文件系统权限基于这些ID判断。搞明白这个,才能安全地管理多用户环境。 用户管理 创建用户用`useradd`。最简形式:`useradd username`。但这样创建的默认值可能不符合预期,比如没有家目录、shell是sh而不是bash。 实用做法:
useradd -m -s /bin/bash -G wheel,developers zhangsan
– `-m` 创建/home/zhangsan家目录 – `-s` 指定登录shell,bash用户友好 – `-G` 附加组,用户同时属于wheel和developers组。注意wheel组在sudo配置里通常有特殊权限 查看用户信息:`id zhangsan` 输出UID、GID和所属组列表。`getent passwd zhangsan` 从系统数据库查完整记录。 修改用户:`usermod`。常用场景:
usermod -aG docker zhangsan   # 追加到docker组,-a必须和-G一起用,否则会覆盖原有附加组
usermod -L zhangsan           # 锁定用户,禁止登录
usermod -U zhangsan           # 解锁
删除用户:`userdel -r zhangsan`。`-r`参数会删除家目录和mail spool,不传则残留文件。 组管理 组分两种:主组(primary group)和附加组(supplementary group)。用户登录后默认所属是主组,创建文件时文件的主组继承用户的主组。 创建组:
groupadd developers
groupadd -g 1500 ops   # 指定GID,避免ID冲突
修改组:`groupmod -n newname oldname` 重命名组。实际场景少,因为重命名后文件系统里旧GID记录的组名会显示为数字。 删除组:`groupdel developers`。注意:如果组是某个用户的主组,不能删除。得先改用户主组或删用户。 密码策略 `passwd`命令改密码。`passwd zhangsan`强制改别人密码需要root。 `chage`管理密码老化:
chage -M 90 zhangsan   # 密码90天后过期
chage -E 2025-12-31 zhangsan   # 账户到期日
chage -l zhangsan      # 查看当前策略
/etc/passwd和/etc/shadow 直接看文件结构更清楚。 `/etc/passwd`每行:
zhangsan:x:1001:1001:Zhang San:/home/zhangsan:/bin/bash
用户名:密码占位符:UID:GID:注释:家目录:shell。x表示密码存在/etc/shadow里。 `/etc/shadow`:
zhangsan:$6$xxx:19253:0:90:7:::
用户名:加密密码:上次改密码天数:最小间隔:最大天数:警告天数:不活动天数:过期天数:保留字段。加密密码以$6$开头是SHA-512。 实战:创建共享开发环境 假设团队有3人,需要共享一个项目目录`/data/project`,每个人都能读写,但新创建的文件自动归组所有。
groupadd project
useradd -m -G project alice
useradd -m -G project bob
useradd -m -G project charlie

mkdir -p /data/project
chown root:project /data/project
chmod 2770 /data/project   # 2是SGID位,新文件继承组
SGID位是关键。普通目录权限`770`,alice创建文件后文件组是alice的主组,其他人无法编辑。加上SGID位(`2770`),新文件自动继承目录的组(project),所有组员都能修改。 检查效果:
sudo -u alice touch /data/project/test.txt
ls -l /data/project/test.txt
# 输出: -rw-rw-r-- 1 alice project 0 ...
文件组是project,bob可以写入。 用户切换与提权 `su`切换用户:`su – zhangsan`,带`-`会加载目标用户的环境变量。 `sudo`授权执行。编辑`/etc/sudoers`用`visudo`,不要直接改文件。常见配置:
zhangsan ALL=(ALL) ALL        # zhangsan可以执行任何命令
%wheel ALL=(ALL) ALL          # wheel组所有成员可以sudo
zhangsan ALL=(ALL) NOPASSWD: ALL  # 免密码sudo
注意点 – UID 0是root,不要轻易给非管理员UID 0 – 用户删除后,文件系统上残留的文件属主显示为数字UID,可以`find / -uid 1001 -exec chown newuser {} \;` 批量处理 – `/etc/login.defs`控制默认参数,比如UID_MIN、PASS_MAX_DAYS,系统安装后先检查这里 – 生产环境建议用LDAP或SSSD集中管理用户,单机管理只适合小团队或测试环境 雨云场景 如果云服务器上做用户管理,比如在雨云的Linux实例上创建多个开发者账号,按上述步骤操作即可。雨云主机性能稳定,SSD IO延迟低,多用户同时编译代码时不会因为磁盘争抢导致卡顿。用SGID共享目录的方式在雨云的多用户开发机上跑得很顺畅,性价比高,适合小团队直接上手。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容