当前位置: 首页 > news >正文

Linux系统中的用户和组管理

1.用户和组分类

1.1.用户分类

  • 超级用户:账户名 root,拥有所有权限,仅在系统维护等必要情况登录,以防安全问题。

  • 系统用户:像 bin、daemon 等,为保障系统正常运行设立,满足系统进程对文件属主要求,不能登录系统。

  • 普通用户:供使用者使用系统资源,多数用户属此类

1.2.工作组分类

  • 基本组(私有组):新建账户时若未指定所属工作组,系统会自动创建与账户名相同的组作为该账户基本组。

  • 扩展组(公有组):可容纳多个用户,组内所有账户都享有该组具备的权限 。

2.配置文件

  • 账户名、密码、工作组信息和工作组密码存储在以下配置文件中

文件名

功能

/etc/passwd

用户账号文件

/etc/shadow用户密码文件
/etc/group工作组帐号文件
/etc/gshadow工作组密码文件

2.1./etc/passwd

  • /etc/passwd 是一个文本文件,用于定义系统的用户信息,由于所有用户都对该文件有读权限,所以该文件中只定义用户账号,而不保存口令(密码)。

[root@zzz ~]# ll /etc/passwd -rw-r--r-- 1 root root 2097 Dec 26 11:21 /etc/passwd [root@zzz ~]# head -1 /etc/passwd root:x:0:0:root:/root:/bin/bash # 用户名:密码:UID:GID:注释:家目录:shell
  • 用户名:用户名称

  • 密码:真实密码保存在 /etc/shadow 中

    • x:经过 shadow 保护的密码,在 /etc/passwd 文件里用 x 代替

  • UID:用户 ID,具有唯一性

    • 0:root 用户 UID

    • 1~999:系统用户 UID

    • ≥1000:普通用户 UID

      • 注意:普通账户从 1000 开始编号,连续编号,即使系统用户某些用户号码未使用,普通用户也不可使用

  • GID:基本组 ID

  • 注释:可添加自定义信息

  • 家目录:

    • root(超级用户):/root

    • 普通用户:/home/用户名

  • shell:默认 bash shell

    • /bin/bash:可登录

    • /sbin/nologin:不可登录

2.2./etc/shadow

  • /etc/shadow 存储密码加密后的密文,又称为 “影子文件”,该文件为了保证了账户密码的安全性只有 root 账户拥有读权限,注意:若该文件权限发生变化,需要留心恶意攻击

[root@zzz ~]# ll /etc/shadow ---------- 1 root root 1140 Dec 26 11:47 /etc/shadow [root@zzz ~]# head -1 /etc/shadow root:$6$I389GMcrEJLPq0j4$t7UD84lWlFN/C8VcUCZsTGRyvuJ0YDYdPPKw/TG9Ak8l4NVVG5OCAR1jxjs6my3OQwy1iZnJoL1b754agiPZT/:20448:0:99999:7::: # 九个字段 # 用户名:加密密码:最后一次修改密码时间:最小密码修改间隔:最大密码修改间隔:警告时间:不活动时间:失效时间:备用
  • 用户名:用户名称

  • 加密密码:加密过后的密码

  • 最后一次修改密码的时间:最后一次修改密码的日期距离 1970.01.01 的天数

  • 最小密码修改间隔:最少多少天之后才能修改密码

  • 最大密码修改间隔:最多多少天之后必须修改密码

  • 警告时间:密码过期前的警告天数

  • 不活动时间:密码过期后的宽限天数

  • 失效时间:距离 1970-01-01 的天数,表示账户彻底失效的日期,到期后无论密码是否有效都无法登录

2.3./etc/group

  • /etc/group 存放每个工作组信息

[root@zzz ~]# ll /etc/group -rw-r--r--. 1 root root 810 Dec 24 15:52 /etc/group [root@zzz ~]# head -1 /etc/group root:x:0: # 工作组名称:密码:组 ID:以该组为附加组的成员(用 , 隔开)

2.4./etc/gshadow

  • /etc/gshadow 存放工作组密码

[root@zzz ~]# ll /etc/gshadow ----------. 1 root root 651 Dec 24 15:52 /etc/gshadow [root@zzz ~]# head -1 /etc/gshadow root::: # 工作组名称:密码:组管理员:其他组成员

3.用户管理

3.1.查看用户信息

3.1.1.id

  • 查看账户 UID、GID、基本组、附加组信息

[root@zzz ~]# id root uid=0(root) gid=0(root) groups=0(root) # UID GID 基本组 ,附加组

3.2.添加新用户

3.2.1.useradd

  • 添加新用户

格式

useradd -选项 具体操作 用户名

选项

参数功能
-c注释信息
-d设置家目录
-e设置用户失效日期
-f设置密码到期后多少天禁用账号
-g设置基本组(基本组需提前存在)
-G设置附加组(扩展组)
-M不创建家目录
-N不创建基本组
-P设置登录密码(密码不加密,推荐使用 passwd 命令设置密码)
-s设置 shell
-u设置 UID
# 创建用户 test1 [root@zzz ~]# useradd test1 [root@zzz ~]# tail -1 /etc/passwd test1:x:1002:1002::/home/test1:/bin/bash [root@zzz ~]# tail -1 /etc/shadow test1:!:20490:0:99999:7::: # ! 表示还未设置密码 [root@zzz ~]# tail -1 /etc/group test1:x:1002: [root@zzz ~]# tail -1 /etc/gshadow test1:!:: [root@zzz ~]# ll -d /home/test1/ drwx------ 3 test1 test1 78 Dec 31 19:52 /home/test1/ # 创建用户 test2 UID 为 2001,shell 为 /bin/bash,附加组为 test1,密码为 test2(非加密) [root@zzz ~]# useradd -u 2001 -s /bin/bash -G test1 -p "test2" test2 [root@zzz ~]# tail -1 /etc/passwd test2:x:2001:2001::/home/test2:/bin/bash [root@zzz ~]# tail -1 /etc/shadow test2:test2:20453:0:99999:7::: [root@zzz ~]# id test2 uid=2001(test2) gid=2001(test2) groups=2001(test2),1001(test1) # 创建用户 test3,不创建家目录,shell 为 /sbin/nologin 不可登录 [root@zzz ~]# useradd -M -s /sbin/nologin test3 # 创建用户 test4,UID 为 3001,所属组为 test1,家目录为 /test [root@zzz ~]# useradd -u 3001 -g test1 -d /test test4

3.3修改用户信息

3.3.1.usermod

  • 修改用户信息

格式

usermod -选项 具体操作 用户名
选项功能
-c -d -g -G -s -u与 useradd 用法一致,代表修改相关参数
-l修改账户名称(未登录状态)
-m

移动用户家目录文件(与 -d 连用)

(-d 只是修改 /etc/passwd 文件里的家目录存储信息, 不移动原有家目录里的文件)

-L锁定账户,不可登录
-U解锁账户
# 修改 test1 用户名为 TEST1,并锁定 TEST1 用户 [root@zzz ~]# usermod -l TEST1 -L test1 [root@zzz ~]# tail -1 /etc/passwd TEST1:x:1001:1001::/home/test1:/bin/bash # 修改 TEST1 用户的家目录为 /test1,并移动原家目录的文件到 /test1 下 [root@zzz ~]# usermod -md /test1 TEST1 [root@zzz ~]# tail -1 /etc/passwd TEST1:x:1001:1001::/test1:/bin/bash [root@zzz ~]# ll /test1 -a total 12 drwx------. 3 test1 test1 78 Feb 6 14:44 . drwxr-xr-x. 6 root root 58 Feb 6 14:51 .. -rw-r--r--. 1 test1 test1 18 Nov 24 2022 .bash_logout -rw-r--r--. 1 test1 test1 141 Nov 24 2022 .bash_profile -rw-r--r--. 1 test1 test1 492 Nov 24 2022 .bashrc

3.4.设置用户密码

3.4.1.passwd

  • 设置用户的密码

    • 用户需设置密码后才可登录

  • 注意:

    • root 用户可修改任何用户密码,且没有强度限制,不需要知道原始密码

    • 普通用户只能修改自身密码,且不能为空、不能设置为回文、需满足密码强度要求,需要知道原始密码

格式

passwd -选项 用户名

选项

参数

功能

-d清空密码(密码未设置的用户不可登录,密码为空的账户可登录)
-e使密码立即过期,强迫用户下次登录时必须修改口令
-i密码过期后多少天停用账户(宽限天数)
-l锁定账户
-u解锁账户
-n设置密码最短使用期限
-x设置密码最长使用期限
# root 账户可设置其他账户密码 [root@zzz ~]# passwd test2 Changing password for user test2. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. # 普通账户只可设置自己的密码,且密码设置必须符合规定,符合强度的密码
  • 非交互式设置密码

# 注意:非交互式设置密码,只可 root 账户使用 [root@zzz ~]# echo 密码 | passwd --stdin 用户名 [root@zzz ~]# echo 密码 | passwd --stdin 用户名 > /dev/null

3.5.删除用户

3.5.1.userdel

  • 删除账户

格式

userdel -选项 账户名

选项

参数

功能

-r删除账户时,一并删除对应家目录
[root@zzz ~]# userdel -r tset1

3.6.切换用户

3.6.1.su

  • 账户切换

格式

su 账户名

su 和 su - 的区别

比较项susu -
切换后目录保持在当前目录切换到目标用户家目录

加载配置文件

~/.bashrc,/etc/bashrc/etc/bashrc,/etc/profile,~/.bashrc,~/.bash_profile
环境重建情况不完全重建,保留当前部分环境设置完全重建,以目标用户环境为准
适用场景临时获取其他用户权限,不改变当前环境太多需要完全以目标用户环境执行操作,如模拟目标用户登录
  • 注意:root 用户无需密码可切换其他用户,而普通用户切换为其他用户需要输入目标用户的密码。

# su 切换,切换后工作目录保持在当前目录 [root@zzz ~]# pwd /root [root@zzz ~]# su zyz [zyz@zzz root]$ pwd /root [zyz@zzz root]$ exit exit # su - 切换,切换后当前工作目录,变到目标用户家目录 [root@zzz ~]# su - zyz [zyz@zzz ~]$ pwd /home/zyz

3.7.控制用户对系统命令的使用权限

3.7.1.sudo

  • 临时切换为 root 身份执行一条命令

  • 需要提前 root 进行相关配置

[root@zzz ~]# su - redhat [redhat@zzz ~]$ ls /root ls: cannot open directory '/root': Permission denied [redhat@zzz ~]$ sudo ls /root We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for redhat: redhat is not in the sudoers file. This incident will be reported. # redhat 不在 sudoers 文件里,此事将被报告。
  • sudo 的执行流程

    • 普通用户执行 sudo 提权时,需要输入自己的密码确认(root 用户不输密码)

    • 密码正确,系统去 /etc/sudoers 文件查找该用户具有的权限

    • 有权限则执行,无权限则报错

配置 /etc/sudoers 文件

  • root 用户配置

[root@zzz ~]# vim /etc/sudoers 或者 visudo 命令可直接修改文件 99 ## Allow root to run any commands anywhere 100 root ALL=(ALL) ALL 101 redhat ALL=(ALL) ALL # 账户名 允许使用的主机=(以谁的身份) 可执行的命令列表 # wq! 强制保存并退出
[root@zzz ~]# su - redhat [redhat@zzz ~]$ cat ls /root cat: /etc/shadow: Permission denied [redhat@zzz ~]$ sudo ls /root

4.工作组管理

4.1.创建工作组

4.1.1groupadd

  • 创建工作组

格式

groupadd -选项 具体参数 工作组名字

选项

参数功能
-g设置 GID,如果不指定则默认值是已有的最大 GID 加 1
-r建立系统组(不和 -g 同时使用时,自动分配 1~999 的 GID)
# 创建系统工作组 [root@zzz ~]# groupadd -r test [root@zzz ~]# tail -1 /etc/group test:x:977: # 创建工作组 [root@zzz ~]# groupadd group1 [root@zzz ~]# tail -2 /etc/group test:x:977: group1:x:1002: # 创建指定 GID 工作组 [root@zzz ~]# groupadd -g 2000 group2 [root@zzz ~]# tail -3 /etc/group test:x:977: group1:x:1002: group2:x:2000:

4.2.修改工作组

4.2.1.groupmod

  • 修改工作组

格式

groupmod -选项 具体操作 工作组名

选项

参数功能
-g修改 GID
-n修改工作组名称
[root@zzz ~]# groupmod -n group2222 -g 3000 group2 [root@zzz ~]# tail -1 /etc/group group2222:x:3000:

4.3.添加/删除组成员

4.3.1.gpasswd

  • 设置组密码

  • 设置组管理员

  • 添加 / 删除组成员

    • 注意:只有 root 用户和组管理员可使用此命令

格式

gpasswd -选项 账户 工作组

选项

参数功能
-r删除组密码
-a添加组成员
-d删除组成员
-M同时添加多个组成员(会覆盖掉原有成员)
-A设置组管理员
# 设置工作组密码 [root@zzz ~]# gpasswd group1 Changing the password for group group1 New Password: Re-enter new password: [root@zzz ~]# tail -2 /etc/gshadow group1:$6$IjB4sJzi.O7.u.IV$z5ZSXaR9cuSaQ..5ltnCknqrCsg4U10eKZ6NIG7a6Ls6B7UrnzyDhkAw6r4byAz1L0x9XBnpSNaxnuG45CdHo.:: group2:!:: # 在工作组中添加多个用户 [root@zzz ~]# gpasswd -M root,user1 group2 # 设置工作组管理员 [root@zzz ~]# gpasswd -A root group2 [root@zzz ~]# tail -2 /etc/gshadow group2:!:root:root,user1 user1:!::

4.4.删除工作组

4.4.1.groupdel

  • 删除工作组

    • 某个用户的基本组:不能直接删除该组,需删除基于该基本组的用户,再删除该组(若为同名组,删除用户时组会自动删除)

格式

groupdel 工作组名
# 创建 user1 用户,自动创建同名基本组 [root@zzz ~]# useradd user1 [root@zzz ~]# tail -1 /etc/group user1:x:2002: # 基于某个用户的基本组,不能直接删除 [root@zzz ~]# groupdel user1 groupdel: cannot remove the primary group of user 'user1' # 删除用户,同名基本组自动删除 [root@zzz ~]# userdel user1 [root@zzz ~]# tail -1 /etc/group group2:x:2000:root # 新创建的工作组,不属于任何用户的基本组,可直接删除 [root@zzz ~]# groupadd group1 [root@zzz ~]# groupdel group1

5.查看用户登录系统

5.1.users

  • 查看当前登录系统的所有用户

[root@zzz ~]# users root

5.2.last

  • 查看当前和历史登录系统的用户相关信息

  • 默认读取 /var/log/wtmp 文件(该文件记录的登入系统的用户名单列出来)

[root@zzz ~]# last zyz tty1 Sat Jan 3 12:25 still logged in zyz tty2 tty2 Sat Jan 3 12:24 gone - no logout zyz seat0 login screen Sat Jan 3 12:24 gone - no logout root pts/0 192.168.17.1 Sat Jan 3 12:24 still logged in reboot system boot 5.14.0-362.8.1.e Sat Jan 3 12:24 still running zyz tty1 Fri Jan 2 18:38 - crash (17:45) root tty2 tty2 Fri Jan 2 18:36 - crash (17:47) root seat0 login screen Fri Jan 2 18:36 - crash (17:47) root pts/0 192.168.17.1 Fri Jan 2 18:33 - crash (17:50) zyz pts/0 192.168.17.100 Fri Jan 2 18:33 - 18:33 (00:00) root pts/0 192.168.17.1 Fri Jan 2 18:31 - 18:32 (00:00) zyz tty2 tty2 Fri Jan 2 18:31 - 18:36 (00:05) zyz seat0 login screen Fri Jan 2 18:31 - 18:36 (00:05) root pts/1 192.168.17.1 Fri Jan 2 16:00 - 18:33 (02:32) root pts/0 192.168.17.1 Fri Jan 2 14:44 - 16:16 (01:32) [root@rhcsa ~]# last -2 root pts/0 192.168.17.1 Sat Feb 14 15:43 gone - no logout reboot system boot 5.14.0-362.8.1.e Sat Feb 14 15:42 still running
  • 第一个字段:用户名

  • 第二个字段:

    • ttyX:本地物理终端

    • pts/X:SSH 远程链接

    • seat0:图形化登录会话

  • 第三个字段:

    • 远程登录会显示 IP

    • 本地登录显示 login screen / 本地终端名(如 tty2)

  • 第四个字段:登录时间

  • 第五个字段:登录状态

    • still logged in:用户当前仍处于登录状态 。

    • gone - no logout:用户已离开但未正常登出 。

    • 时间范围:如 Fri Jan 2 18:31 - 18:36,表示登录和登出时间,(00:05) 是登录时长 。

    • crash:表明系统发生崩溃,登录会话异常结束 。

5.3.lastlog

  • 查看每个用户的最近登录时间

  • 读取 /var/log/lastlog 文件

[root@zzz ~]# lastlog Username Port From Latest root pts/0 192.168.17.1 Sat Jan 3 12:24:16 +0800 2026 bin **Never logged in** ... tcpdump **Never logged in** zyz tty1 Sat Jan 3 12:25:06 +0800 2026

5.4.w

  • 查看当前登录到系统的用户信息

[root@zzz ~]# w 13:43:29 up 43 min, 4 users, load average: 0.00, 0.01, 0.00 USER TTY LOGIN@ IDLE JCPU PCPU WHAT root pts/0 12:24 1.00s 0.01s 0.00s w zyz tty1 12:25 1:17m 1.67s 1.67s -bash
  • 第一行:

    • 当前系统时间,运行时间,登录系统用户数量,系统负载信息 1min、5min、15min 平均负载,数值越低,系统越空闲

  • 第二行:

    • USER:用户名

    • TTY:用户登录使用的终端设备

      • pts/0:SSH 远程链接

      • tty1:本地登录

    • LOGIN@:登录时间

    • IDLE:闲置时间

    • JCPU:所有进程占用 CPU 时间

    • PCPU:当前进程占用 CPU 时间

    • WHAT:用户正在执行的命令

5.5.who

  • 显示目前登录到系统的用户

  • 查看 /var/run/utmp 文件

选项

参数功能
-s仅显示名称、线路、时间(默认输出)
-a显示所有信息(详细信息)
-b系统最近启动时间
-m显示当前终端信息
-q显示登录系统用户和用户总数
-r显示当前系统运行级别
-u显示登录系统用户信息
-T/-w

显示 tty 终端状态标志

+:任何人可写

-:root 和所有者可写

?:未知

[root@zzz ~]# who -s root pts/0 2026-01-03 12:24 (192.168.17.1) zyz tty1 2026-01-03 12:25 [root@zzz ~]# who -b system boot 2026-01-03 12:24 [root@zzz ~]# who -m root pts/0 2026-01-03 12:24 (192.168.17.1) [root@zzz ~]# who -q root zyz # users=2 [root@zzz ~]# who -r run-level 3 2026-01-03 12:25 last=5 [root@zzz ~]# who -u root pts/0 2026-01-03 12:24 . 1918 (192.168.17.1) zyz tty1 2026-01-03 12:25 01:50 3240 [root@zzz ~]# who -T root + pts/0 2026-01-03 12:24 (192.168.17.1) zyz + tty1 2026-01-03 12:25 # 查看当前终端登录的用户是谁 [root@zzz ~]# whoami root [root@zzz ~]# who am i root pts/0 2026-02-14 15:43 (192.168.17.1)
[root@zzz ~]# who -a system boot 2026-02-14 15:42 run-level 5 2026-02-14 15:42 root + pts/0 2026-02-14 15:43 . 2414 (192.168.17.1)
http://www.cnnetsun.cn/news/3156429.html

相关文章:

  • 告别复杂环境配置,OpenClaw 多平台一键部署实操全流程(含安装包)
  • 【AI大模型进阶】参数入门:temperature等核心参数作用详解
  • 大疆发布 Mic Mini 2S:新增存储与多麦连接能力,售价 629 元
  • AI 无人直播软件横向测评:2026 主流产品功能、成本、适配维度对照
  • 2026年干细胞机构观察:四家企业技术布局与服务边界梳理
  • 易信easyMarkets观察:服务响应、风控提示和使用秩序的综合参考
  • Fable 5“抓狂发言”引热议:大模型“私有语言”是隐患还是萌点?
  • 百考通AI帮你把通过检测系统
  • Anthropic与OpenAI芯片争霸:谁能在AI芯片领域成为武林盟主?
  • 我们在焦虑什么
  • AI算力调度新方案:动态评分机制解析与工程实践
  • 百考通AI高质量开题报告开启智慧新篇章
  • 硅基流动递表港交所冲击“Token工厂第一股”:高估值背后是AI水电煤还是资本泡沫?
  • 从零实战京东JoyAI-VL-Interaction:构建实时视频交互AI助手
  • 为什么有些人学什么都很快?
  • 安卓修改大师:Receiver属性详解与屏幕亮灭监听实战
  • 计算机视觉会议/期刊缩写速查:CVPR/ECCV/TPAMI 等 50+ 项 BibTeX 格式一键生成
  • 同城跑腿行业痛点与数字化解决方案探讨
  • 集人脸、刷卡、掌静脉、密码多模态于一体的嵌入式智能门禁梯控
  • 使用langgraph的意义是什么
  • 基于32维Cayley_Dickson超复数的全域拓扑统一场论——反重力、真空自持供能、维度瞬移与星际宇宙脑秩序体系
  • 通信与接口协议面试二、UART
  • 未来已来:KubeHawk的 roadmap 与云原生监控趋势
  • 告别白嫖困扰,让软件真正变现——乾坤云网络验证,一键守护你的劳动成果
  • api-guarder项目详解:从安装到使用的完整教程
  • KPL-gmssl性能测试报告:鲲鹏芯片加密速度提升300%的秘密
  • Wireshark网络流量分析实战:从TCP故障排查到安全威胁识别
  • openEuler-lsb核心组件详解:理解LSB规范的关键模块
  • SoftBR多线程支持详解:如何跟踪复杂并发程序的分支执行
  • 2026年性能测试平台选型指南:核心能力、趋势与四大平台实测