Linux用户与组管理全解析

用户和组管理

一、用户和组的配置文件

  1. 用户账号分类
    • 超级用户root(UID=0),拥有系统最高权限,仅限系统管理,维护任务时使用,日常操作建议使用普通用户。
    • 普通用户:由管理员创建(UID≥1000),权限受限,仅对用户自己的家目录有完整控制权。
    • 程序用户(服务用户):UID 范围为 1-999,用于运行系统服务或应用程序,禁止登录系统(如 nginxmysql)。
  2. 组账号
    • 由于某种联系将多个用户集合在一起,就构成了一个用户组。
    • 每个用户必须属于一个基本组(主组),可加入多个附加组(辅助组)。
    • 组机制用于批量分配权限(如共享文件访问权)。
  3. UID 与 GID
    类型范围说明
    UID0root 用户
    1–999程序用户(系统保留)
    1000–60000普通用户
    GID0root
    1–999系统组
    1000–60000普通组

二、核心配置文件

  1. /etc/passwd
    • 作用:存储用户基本信息(用户名、UID、家目录、Shell 等)。

    • 格式(7 个冒号分隔字段):

      用户名:密码占位符(x):UID:GID:用户全名(描述信息):主目录:登录Shell  
      
    • 示例

      alice:x:1001:1001:Alice Chen:/home/alice:/bin/bash  
      

基于系统运行和管理的需要,所有的用户都能访问/etc/passwd文件的内容,但是只有root用户能进行修改
早期的时候账号和密码信息是保存在passwd文件中的,不法用户可以获取密码字符串进行暴力破解,存在不安全性,因此后来将密码转存到专门的shadow文件中,而passwd文件的密码用“x”表示。

  1. /etc/shadow(影子文件)
    • 权限:仅 root 可读写,增强密码安全性。

    • 格式(9 个冒号分隔字段):

      用户名:加密密码:最后修改密码天数:最小修改间隔:密码有效期:警告期:宽限期:账号失效日:保留字段  
      
    • 关键字段说明

      • 密码字段
        • *!!:账号被锁定,禁止登录。
        • 空:无需密码即可登录(危险!)。
      • 时间计算基准:1970 年 1 月 1 日(UNIX 时间)。
  2. /etc/group
    • 作用:存储组信息。

    • 格式

      组名:组密码占位符(x):GID:组成员列表(逗号分隔)  
      
  3. /etc/gshadow
    • 作用:存储组密码和管理信息。

    • 格式

      组名:加密密码:组管理员:组成员  
      
    • 密码字段

      • 空或 !:无密码。
      • 加密字符串:允许非成员通过密码临时加入组(newgrp 命令)。

三、用户与组管理命令

命令功能常用选项示例
useradd创建用户-u UID-d /home/dir-g 主组-G 附加组-s /bin/bash-c "备注"useradd -u 1002 -d /data/bob -g dev -G admin bob
usermod修改用户属性-L(锁定)、-U(解锁)、-aG(追加附加组)usermod -aG docker alice
userdel删除用户-r(同时删除家目录和邮件)userdel -r bob
passwd管理密码-l(锁定)、-u(解锁)、-S(查看状态)passwd -l alice
groupadd创建组-g GIDgroupadd -g 2000 dev
groupdel删除组——groupdep dev
gpasswd管理组成员-a 用户(添加)、-d 用户(移除)gpasswd -a bob dev
chage修改密码策略-m 天数(最小间隔)、-M 天数(有效期)、-W 天数(警告期)chage -M 90 -W 7 alice

安全提示

  • 使用 -r 删除用户时,会同步删除 /home/用户名/var/mail/用户名
  • 程序用户需用 -s /sbin/nologin 禁止登录。

四、权限委派(sudo)

  1. 配置流程
    • 编辑配置文件:visudo(安全编辑 /etc/sudoers)。

    • 添加授权规则:

      # 语法:用户  主机=(可切换身份)  允许的命令  
      alice  ALL=(root)  /usr/sbin/useradd, /usr/sbin/userdel  
      
    • 或使用别名简化:

      Cmnd_Alias USER_CMDS = /usr/sbin/useradd, /usr/sbin/userdel  
      %admin  ALL=(root)  USER_CMDS  # %admin 表示 admin 组  
      
  2. 普通用户使用 sudo
    sudo useradd tom    # 输入用户自己的密码验证  
    

注意

  • 命令需写完整路径(通过 which useradd 查询)。
  • 首次使用 sudo 需输入当前用户密码,默认缓存 15 分钟。

关键补充说明

  1. UID/GID 分配规则

    • 普通用户 UID 从 1000 开始(由 /etc/login.defsUID_MIN 定义)。
    • 系统自动分配 UID 时,会选择当前最小未使用的值。
  2. 查看用户信息

    id alice          # 查看 UID/GID 及所属组  
    groups alice      # 查看用户所在组  
    getent passwd bob # 查询 passwd 条目  
    
  3. 密码策略示例chage):

    chage -m 7 -M 90 -W 7 -E 2025-12-31 alice  # 强制每 90 天改密,到期前 7 天警告,2025 年底失效  
    
  4. 安全实践

    • 禁用 root 远程登录,改用普通用户 + sudo
    • 为服务程序创建专属程序用户(如 useradd -r -s /sbin/nologin mysql)。
  5. 切换用户

    • su - 用户名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值