欢迎光临
我们一直在努力

从建用户到分组管控全套实操,零基础学会服务器权限管理

Linux用户与组管理

Linux 用户

一、用户介绍

1.1 用户是什么

用户账号是服务器安全的根基,用来管权限。所有文件、正在跑的程序,都归某个用户名下;系统靠这个限制谁能读写文件、运行程序。对外我们用用户名登录,系统内部靠一串数字 UID 区分每个账号,不会搞混。登录密码用来验证身份,防止别人冒充账号登录操作服务器。

用户三大分类

  • superuser:用于管理系统,用户名称为root,UID为0,对系统具有完全访问权限。
  • system users:系统具有系统用户帐户,由提供支持服务的进程使用。 这些进程或守护进程通常不需要以超级用户身份运行。 它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统。
  • regular users:大多数用户拥有常规用户帐户,用于日常工作。
  • 1.2 passwd

    用户信息文件

    这个文件存系统所有用户基础信息,每行代表一个用户,冒号:分成 7 段内容。

    # 查看全部用户信息
    [xiaoma@centos7 ~ 16:43:37]$ cat /etc/passwd
    # 只看指定用户
    [xiaoma@centos7 ~ 17:14:29]$ grep xiaoma /etc/passwd
    xiaoma:x:1000:1000:xiaoma:/home/xiaoma:/bin/bash

    七段内容拆分(xiaoma❌1000:1000:xiaoma:/home/xiaoma:/bin/bash)

  • xiaoma:登录用户名
  • x:密码占位符,真正加密密码不在这,存在 /etc/shadow
  • 1000:UID 用户数字编号
  • 1000:GID 用户主组编号
  • xiaoma:注释,用户真实姓名 / 备注
  • /home/xiaoma:家目录,登录后默认进入的文件夹
  • /bin/bash:登录 shell,能登录;/sbin/nologin 禁止登录
  • 个人理解:想查服务器有哪些登录账号,直接看这个文件,末尾是 /bin/bash 的都是可登录普通用户。

    二、查看登录用户命令

    2.1 whoami

    看自己当前登录账号

    [xiaoma@centos7 ~ 17:20:56]$ whoami
    xiaoma

    打印你现在正在用的用户名,分不清 su 切换账号时用。

    理解:root 执行输出 root,普通用户登录输出自己的账号名。

    2.2 who

    查看所有终端登录的人

    [xiaoma@centos7 ~ 17:22:08]$ who
    xiaoma :0 2026-07-17 10:40 (:0)
    xiaoma pts/0 2026-07-17 10:54 (:0)
    xiaoma pts/1 2026-07-17 16:05 (10.1.8.1)
    xiaoma pts/2 2026-07-17 16:05 (10.1.8.1)

    列出所有正在登录服务器的用户、登录 IP、登录时间、终端窗口。

    理解:多人共用服务器时,快速看谁在线、从哪台电脑连上来。

    2.3 w

    who 增强版,带系统负载

    [xiaoma@centos7 ~ 17:24:36]$ w
    17:24:38 up 5:51, 4 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    xiaoma :0 :0 10:40 ?xdm? 2:23 0.27s /usr/libexec/gnome-
    xiaoma pts/0 :0 10:54 6:23m 0.06s 2.12s /usr/libexec/gnome-
    xiaoma pts/1 10.1.8.1 16:05 6.00s 0.10s 0.02s w
    xiaoma pts/2 10.1.8.1 16:05 1:18m 0.04s 0.10s sshd: xiaoma [priv]

    不仅显示登录用户,还展示服务器 CPU、内存负载,每个人正在执行的命令。

    理解:排查服务器卡顿、谁在占用资源首选 w 命令。

    2.4 users

    只打印在线用户名

    [xiaoma@centos7 ~ 17:25:14]$ users
    xiaoma xiaoma xiaoma xiaoma

    极简输出,只列出所有登录账号名称,无额外信息。

    三、用户管理核心命令

    3.1 useradd

    新建用户

    基础创建(自动生成同名主组、家目录、bash 登录 shell)

    [root@centos7 ~ 21:20:07]# grep user01 /etc/passwd
    user01:x:1001:1001::/home/user01:/bin/bash

    创建 user01 用户,自动创建组 user01,家目录 /home/user01。

    # 用户2
    [root@centos7 ~ 21:20:44]# useradd -u 8888 -g wheel -c "software manager" -d /opt/user02 -s /sbin/nologin user02
    # -u 指定UID;
    # -g 用户的主组
    # -c 描述信息
    # -d 用户家目录
    # -s 用户登录shell程序

    [root@centos7 ~ 21:21:38]# grep user02 /etc/passwd
    user02:x:8888:10:software manager:/opt/user02:/sbin/nologin
    [root@centos7 ~ 21:28:44]# ls -d /opt/user02/
    /opt/user02/

    # 创建一个没有密码的账户,该用户在图形化界面中可以直接登录
    [root@centos7 ~ 21:30:23]# useradd -p '' tom

    新用户家目录中的文件来源于 /etc/skel/目录

    [root@centos7 ~ 21:30:43]#
    [root@centos7 ~ 21:30:43]# ls -a ~tom
    . .. .bash_logout .bash_profile .bashrc .mozilla
    [root@centos7 ~ 21:35:00]# ls -a /etc/skel/
    . .. .bash_logout .bash_profile .bashrc .mozilla

    创建用户的时候,用户属性默认参数配置在/etc/login.defs文件

    [root@centos7 ~ 21:40:37]# vim /etc/login.defs

    3.2 usermod

    修改用户属性

    # -m 移动家目录到新的位置
    [root@centos7 ~ 21:45:26]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash
    [root@centos7 ~ 21:46:25]# grep user02 /etc/passwd
    user02:x:1008:10:software manager:/home/user02:/bin/bash
    [root@centos7 ~ 21:46:55]# ls -d /home/user02/
    /home/user02/

    [root@centos7 ~ 21:47:05]# su – user02
    Last login: Mon Nov 7 17:08:58 CST 2022 on pts/2
    [user02@centos7 ~ 21:47:06]$

    添加补充组,如果没有-a选项,则代表将补充组设置为user01,原先的补充组就被覆盖了。

    [root@centos7 ~ 21:52:18]# usermod -aG user01 user02
    [root@centos7 ~ 21:52:48]# id user02
    uid=1008(user02) gid=10(wheel)=10(wheel),1001(user01)

    重点理解:-G代表附加组,必须搭配 – a 追加,否则之前加入的其他组全部清空。

    3.3 userdel

    删除用户

    # 正常删除
    [root@centos7 ~ 21:54:11]# useradd user03
    [root@centos7 ~ 21:54:28]# userdel user03

    # 强制删除
    [root@centos7 ~ 21:55:10]# userdel user02
    userdel: user user02 is currently used by process 9071
    [root@centos7 ~ 21:55:44]# id user02
    uid=1008(user02) gid=10(wheel) groups=10(wheel),1003(user01)

    # 尽量不要强制删除,要找到无法删除的原因
    [root@centos7 ~ 21:58:57]# userdel -f user02
    userdel: user user02 is currently used by process 9071
    [root@centos7 ~ 21:59:15]# id user02
    id: user02: no such user

    七、练习

  • 创建 operator1 用户
  • 使用 id 验证 operator1 用户信息
  • 查看 /etc/passwd 中对应条目
  • 密码设置为 redhat
  • 修改 operator1 用户uid为1088
  • 修改 operator1 用户描述信息为"Operator One"
  • 将 wheel 组作为补充组添加给 operator1 用户
  • 查看 /etc/group 中对应条目
  • 删除 operator1 用户
  • #1 创建用户
    [root@centos7 ~ 21:59:43]# useradd operator1
    #2 查看id
    [root@centos7 ~ 22:05:23]# id operator1
    uid=8890(operator1) gid=8890(operator1)=8890(operator1)
    #3 查看passwd
    [root@centos7 ~ 22:05:31]# grep operator1 /etc/passwd
    operator1:x:8890:8890::/home/operator1:/bin/bash
    #4 设置密码
    [root@centos7 ~ 22:08:52]# ehco redhat | passwd –stdin operator1
    更改用户 operator1 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    #5 修改UID
    [root@centos7 ~ 22:15:33]# usermod -u 1088 operator1
    #6 修改备注
    [root@centos7 ~ 22:17:22]# usermod -c "Operaror one " operator1
    #7 添加wheel附加组
    [root@centos7 ~ 22:18:19]# usermod -aG wheel operator1
    #8 查看wheel组
    [root@centos7 ~ 22:18:50]# grep wheel /etc/group
    wheel:x:10:xiaoma,operator1
    #9 删除用户(最后执行)
    [root@centos7 ~ 22:20:38]# userdel -r operator1

    综合练习

    # 1 添加账户
    [root@centos7 ~]# vim /etc/passwd
    # 最后一行添加如下内容,注意uid要在原有的基础上增加1
    zhangsan:x:1002:1002::/home/zhangsan:/bin/bash

    # 2 添加组
    [root@centos7 ~]# vim /etc/group
    # 最后一行添加如下内容
    zhangsan:x:1002:

    # 3 添加密码
    [root@centos7 ~]# vim /etc/shadow
    # 最后一行添加如下内容
    zhangsan:$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::

    # 4 准备家目录
    [root@centos7 ~]# cp -r /etc/skel/ /home/zhangsan
    # 修改zhangsan家目录所属有zhangsan用户和组
    [root@centos7 ~]# chown zhangsan:zhangsan /home/zhangsan
    [root@centos7 ~]# ll -d /home/zhangsan
    drwxr-xr-x. 16 zhangsan zhangsan 4096 719 14:00 zhangsan

    # 测试
    [root@centos7 ~]# ssh zhangsan@localhost

    组管理

    一、用户组介绍

    组就是一批用户的集合,靠 GID 数字编号区分,用来批量给一批人分配文件访问权限。

    两种组

  • 主组(私有组):创建用户自动生成同名组,这个用户默认的主组,新建文件默认归属这个组。一个用户只能有 1 个主组。
  • 附加组(附属组):额外添加的组,用来给用户开放其他文件夹权限,一个用户可以加入多个附加组。
  • # 查看用户信息
    [xiaoma@centos7 ~ 17:17:10]$ id
    uid=1000(xiaoma) gid=1000(xiaoma) groups=1000(xiaoma),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    # 查看用户 uid
    [xiaoma@centos7 ~ 17:19:52]$ id -u xiaoma
    1000

    group

    组信息文件

    存放所有用户组信息,每行一组,冒号分 4 段

    # 查看所有组
    [xiaoma@centos7 ~ 17:16:00]$ cat /etc/group
    # 过滤指定组
    [xiaoma@centos7 ~ 17:16:31]$ grep wheel /etc/group
    wheel:x:10:xiaoma

    四段内容(wheel❌10:xiaoma)

  • wheel:组名称
  • x:组密码占位符
  • 10:GID 组数字编号
  • xiaoma:组内附加成员,多个用户用逗号隔开
  • 二、本地组管理

    groupadd 命令

    新建用户组

    # 创建名称为 admin 的组
    [root@centos7 ~]# groupadd admin

    # 创建名称为sysadmin的组,组id为2000
    [root@centos7 ~]# groupadd sysadmin -g 2000

    # 验证
    [root@centos7 ~]# grep admin /etc/group
    printadmin:x:997:
    admin:x:1002:
    sysadmin:x:2000:

    groupmod 命令

    修改已有组的信息

    # 修改组名称
    [root@centos7 ~]# groupmod –new-name admins admin

    # 修改组id
    [root@centos7 ~]# groupmod -g 2002 admins

    # 验证
    [root@centos7 ~]# grep 'admins' /etc/group
    admins:x:2002:

    groupdel 命令

    删除空用户组

    # 删除sysadmin组
    [root@centos7 ~]# groupdel sysadmin

    # 验证
    [root@centos7 ~]# grep sysadmin /etc/group

    groupmems 命令

    管理组内附加用户成员

    作用:专门用来给组添加、移除、清空、查看里面的附属用户,只能 root 执行。

    # 添加成员
    [root@centos7 ~]# groupmems -g admins -a xiaoma
    [root@centos7 ~]# groupmems -g admins -l
    xiaoma
    [root@centos7 ~]# id xiaoma
    uid=1000(xiaoma) gid=1000(xiaoma)=1000(xiaoma),10(wheel),2002(admins)

    # 删除成员
    [root@centos7 ~]# groupmems -g admins -d xiaoma
    [root@centos7 ~]# groupmems -g admins -l

    # 清空组中所有成员
    [root@centos7 ~]# groupmems -g admins -a xiaoma
    [root@centos7 ~]# groupmems -g admins -p

    课后练习

  • 创建developer组,组id为2000
  • 修改developer组名称为developers,组id为3000
  • 创建developer1用户,并添加到组developers
  • 将developer1用户从组developers中删除
  • 删除组developers
  • # 创建developer组,组id2000
    [root@centos7 ~ 16:56:59]# groupadd developer -g 2000

    # 验证
    [root@centos7 ~ 17:01:53]# grep developer /etc/group
    developer:x:2000:

    # 修改组名称
    [root@centos7 ~ 17:02:56]# groupmod –new-name developers developer

    # 修改组id
    [root@centos7 ~ 17:04:21]# groupmod -g 3000 developers

    # 验证
    [root@centos7 ~ 17:04:44]# grep 'developers' /etc/group
    developers:x:3000:

    # 创建用户
    [root@centos7 ~ 17:06:11]# useradd developer1
    [root@centos7 ~ 17:08:44]# groupmems -g developers -a developer1

    # 验证
    [root@centos7 ~ 17:11:07]# groupmems -g developers -l
    developer1

    # 删除用户
    [root@centos7 ~ 17:13:16]# groupmems -g developers -d developer1
    [root@centos7 ~ 17:14:42]# groupmems -g developers -l

    # 删除组
    [root@centos7 ~ 17:15:31]# groupdel developers
    [root@centos7 ~ 17:16:29]# grep developers /etc/group

    全文总结

    Linux 用户和组是服务器权限管控的基础,整体分为 6 大核心模块:

  • 用户与组基础概念:root (0)、系统用户 (1-999)、普通用户 (1000+);主组唯一、附加组多组;核心文件/etc/passwd存基础信息,/etc/group存组信息。
  • 查看在线用户:whoami 看自身账号,who/w 查看全部登录人,w 附带服务器负载,排查在线用户必备。
  • 用户增删改 useradd/usermod/userdel:useradd 新建账号可自定义 UID、家目录、登录 shell;usermod 修改属性,添加附加组必须带-aG;userdel -r 彻底删除账号连带目录。
  • 组管理 groupadd/groupmod/groupdel/gpasswd:创建、修改、删除组,gpasswd 快速添加 / 移除组内用户,运维高频工具。
  • 密码与时效管控:/etc/shadow存放加密密码,passwd 重置、锁定账号;chage 统一配置密码过期规则,企业服务器规范安全策略。
  • 登录 shell 区分:/bin/bash 允许登录,/sbin/nologin 禁用登录,后台程序账号统一用 nologin 提升安全。
  • 赞(0)
    未经允许不得转载:171主机测评 » 从建用户到分组管控全套实操,零基础学会服务器权限管理
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址