Linux用户/组管理与提权命令实战指南 文章目录Linux用户/组管理与提权管理命令用户/组管理本地用户管理users命令useradd命令usermod命令userdel命令本地组管理groupadd命令groupmod命令groupdel命令groupmems命令用户密码管理shadow文件chage命令提权管理su命令sudo命令Linux用户/组管理与提权管理命令用户/组管理本地用户管理users命令功能:查看当前系统中所有终端登录的用户名[rootcentos-xianyu ~10:09:34]# usersxianyu xianyuuseradd命令功能:创建用户# 创建用户user01[rootcentos-xianyu ~10:10:02]# useradd user01# /etc/passwd 是Linux系统中存储用户账户基础信息的核心配置文件# grep 过滤用户名为user01[rootcentos-xianyu ~10:11:43]# grep user01 /etc/passwduser01:x:1002:1002::/home/user01:/bin/bash# useradd 选项# -u uid# -d 用户的家目录# -c 描述信息# -g 用户的主组# -s 用户shell程序[rootcentos-xianyu ~10:11:56]# useradd -u 1111 -d /opt/user02 -c user for software manage -g wheel -s /sbin/nologin user02[rootcentos-xianyu ~10:20:22]# grep user02 /etc/passwduser02:x:1111:10:userforsoftware manage:/opt/user02:/sbin/nologinusermod命令功能:修改用户属性[rootcentos-xianyu ~10:32:27]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash# usermod 选项# -u 新的UID号 (修改用户ID)# -d 新的家目录路径 (仅修改家目录的路径配置不会自动移动文件)# -m 将原家目录内容移动到新家目录 (配合 -d 使用移动数据)# -c 修改用户的描述信息 (GECOS注释)# -g 修改用户的主组 (初始组/主要组)# -G 修改用户的附加组 (附属组) [注意单独使用 -G 会覆盖掉用户原有的所有附加组]# -a 以追加方式修改附加组 (必须与 -G 搭配使用如 -aG表示“增加”而不覆盖原有的附加组)# -s 修改用户登录后的默认 Shell (如 /bin/bash 或 /sbin/nologin)# -l 修改用户的登录名 (即把 user02 改名为其他名字)# -L 锁定用户密码 (在 /etc/shadow 密码前加 !禁止该用户登录)# -U 解锁用户密码 (移除密码前的 !恢复该用户登录权限)[rootcentos-xianyu ~10:32:31]# grep user02 /etc/passwduser02:x:1008:10:userforsoftware manage:/home/user02:/bin/bashuserdel命令功能:删除用户[rootcentos-xianyu ~10:35:31]# userdel user02# 删除后无法查找到user02[rootcentos-xianyu ~10:36:44]# grep user02 /etc/passwd# 当我们删除账户user02 再创建时 会提示以下信息[rootcentos-xianyu ~10:39:49]# useradd user02useradd警告此主目录已经存在。 不从 skel 目录里向其中复制任何文件。 正在创建信箱文件: 文件已存在# 原因:未删除之前创建user02时的主目录以及信箱文件[rootcentos-xianyu ~10:40:55]# ls /opt/user02/opt/user02# 删除用户主目录[rootcentos-xianyu ~10:43:27]# rm -fr /opt/user02# 删除系统本地邮箱池[rootcentos-xianyu ~10:45:40]# rm -fr /var/spool/mail/user02综合练习:创建 operator1 用户使用 id 验证 operator1 用户信息查看 /etc/passwd 中对应条目密码设置为 redhat修改 operator1 用户uid为1088修改 operator1 用户描述信息为Operator One将 wheel 组作为补充组添加给 operator1 用户查看 /etc/group 中对应条目删除 operator1 用户[rootcentos-xianyu ~10:45:56]# useradd operator1[rootcentos-xianyu ~10:49:35]# id operator1uid1004(operator1)gid1004(operator1)组1004(operator1)[rootcentos-xianyu ~10:49:57]# grep operator1 /etc/passwdoperator1:x:1004:1004::/home/operator1:/bin/bash[rootcentos-xianyu ~10:50:20]# echo redhat | passwd --stdin operator1更改用户 operator1 的密码 。 passwd所有的身份验证令牌已经成功更新。[rootcentos-xianyu ~10:51:09]# usermod -u 1088 operator1[rootcentos-xianyu ~10:51:42]# usermod -c Operator One operator1[rootcentos-xianyu ~10:52:33]# usermod -aG wheel operator1[rootcentos-xianyu ~10:52:58]# grep operator1 /etc/passwdoperator1:x:1088:1004:Operator One:/home/operator1:/bin/bash[rootcentos-xianyu ~10:53:18]# grep operator1 /etc/groupwheel:x:10:operator1 operator1:x:1004:[rootcentos-xianyu ~10:53:53]# userdel operator1[rootcentos-xianyu ~10:54:17]# rm -fr /var/spool/mail/operator1[rootcentos-xianyu ~10:54:44]# rm -fr /home/operator1本地组管理groupadd命令功能:创建组# 创建组admin[rootcentos-xianyu ~10:56:19]# groupadd admin# 创建组sysadmin GID为2000[rootcentos-xianyu ~10:56:24]# groupadd sysadmin -g 2000[rootcentos-xianyu ~10:56:33]# grep admin /etc/groupprintadmin:x:997: admin:x:1004: sysadmin:x:2000:groupmod命令功能:修改组属性# groupmod --new-name 修改组admin名称为admins[rootcentos-xianyu ~10:56:49]# groupmod --new-name admins admin[rootcentos-xianyu ~10:58:58]# grep admin /etc/groupprintadmin:x:997: sysadmin:x:2000: admins:x:1004:# groupmod -g 修改组admins id为2002[rootcentos-xianyu ~11:00:36]# groupmod -g 2002 admins[rootcentos-xianyu ~11:00:54]# grep admin /etc/groupprintadmin:x:997: sysadmin:x:2000: admins:x:2002:groupdel命令功能:删除组# 删除组sysadmin[rootcentos-xianyu ~11:00:58]# groupdel sysadmin[rootcentos-xianyu ~11:04:35]# grep admin /etc/groupprintadmin:x:997: admins:x:2002:groupmems命令功能:管理指定用户组内的成员列表# groupmems 选项# -a, --add username 将用户 username 添加到组成员中# -d, --delete username 从组的成员中删除用户 username# -h, --help 显示此帮助信息并推出# -p, --purge 从组中移除所有成员# -l, --list 列出组中的所有成员# 添加指定组成员[rootcentos-xianyu ~11:04:42]# groupmems -g admins -a xianyu[rootcentos-xianyu ~11:09:28]# id xianyuuid1000(xianyu)gid1000(xianyu)组1000(xianyu),2002(admins)# 删除成员rootcentos-xianyu ~11:09:35]# groupmems -g admins -d xianyu[rootcentos-xianyu ~11:10:17]# id xianyuuid1000(xianyu)gid1000(xianyu)组1000(xianyu)# 清空组中所有成员[rootcentos-xianyu ~11:10:20]# groupmems -g admins -a xianyu[rootcentos-xianyu ~11:10:54]# groupmems -g admins -lxianyu[rootcentos-xianyu ~11:11:21]# groupmems -g admins -p[rootcentos-xianyu ~11:11:38]# groupmems -g admins -l综合练习:创建developer组组id为2000修改developer组名称为developers组id为3000创建developer1用户并添加到组developers将developer1用户从组developers中删除删除组developers[rootcentos-xianyu ~11:11:40]# groupadd developer -g 2000[rootcentos-xianyu ~11:12:59]# grep developer /etc/groupdeveloper:x:2000:[rootcentos-xianyu ~11:14:32]# groupmod --new-name developers developer -g 3000[rootcentos-xianyu ~11:14:58]# grep developer /etc/groupdevelopers:x:3000:[rootcentos-xianyu ~11:15:06]# useradd developer1[rootcentos-xianyu ~11:15:54]# groupmems -g developers -a developer1[rootcentos-xianyu ~11:16:05]# groupmems -g developers -ldeveloper1[rootcentos-xianyu ~11:16:09]# groupmems -g developers -p[rootcentos-xianyu ~11:16:41]# groupdel developers用户密码管理shadow文件/etc/shadow是 Linux 系统中真正存储用户加密密码和密码过期策略的核心安全文件# 示例:[rootcentos-xianyu ~11:18:11]# grep xianyu /etc/shadowxianyu:$6$IQdigcmo$jN8LV3GTFPj0cJUXsMSbGd1DSKdjEbkhxn3hx2tufniLG5RCKNNrq7OvwtUBD/DoTJ9h6m4fxO1FUeeEHmzFB0:20648:0:99999:7:::# 由:进行分割 上述文件记录的信息分别为# username登录名与 passwd 文件匹配。# encrypted password加密的密码哈希值如果为空表示无密码如果为 ! 或 *表示锁定/禁用。# last password change自 1970 年 1 月 1 日起最后一次密码更改的天数。# minimum password age允许更改密码前的最少天数0 表示随时可更改。# maximum password age密码必须更改前的最大天数。# password warning period密码过期前多少天开始警告用户。# password inactivity period密码过期后多少天禁用该账户。# account expiration date自 1970 年 1 月 1 日起账户过期的日期天数。# reserved/flag保留字段通常为空被系统预留用于未来使用。chage命令功能:修改和查看用户密码过期策略# chage选项示例# -l 用户名列出该用户当前的密码时效详细信息最常用无需 root 也能查看自己的。# -d 0 用户名将最后一次修改密码的时间归零强制用户在下一次登录时立即修改密码搭配 passwd -e 效果一致。# -M 90 用户名设置密码最大有效期为 90 天超过必须强制改密。# -m 7 用户名设置密码最小修改间隔为 7 天防止用户频繁改回原密码。# -W 7 用户名设置密码过期前 7 天开始警告用户。# -I 3 用户名密码过期后给予 3 天宽限期超过 3 天不改密码账号将被锁定。# -E 2026-12-31 用户名设置该账号在 2026年12月31日 自动失效常用于临时账号管理。提权管理su命令功能:核心作用是在不退出当前登录会话的情况下切换为另一个用户的身份[rootcentos-xianyu ~11:22:03]# su --help用法su[选项][-][USER[参数]...]将有效用户id和组id更改为USER的 id。 单个 - 视为 -l。如果未指定USER将假定为 root。 选项 -m, -p, --preserve-environment 不重置环境变量 -g,--group组指定主组 -G, --supp-group组指定一个辅助组 -, -l,--login使 shell 成为登录 shell -c,--command命令使用-c向 shell 传递一条命令 --session-command命令使用-c向 shell 传递一条命令 而不创建新会话 -f,--fast向shell 传递-f选项(csh 或 tcsh)-s,--shellshell若 /etc/shells 允许则运行 shell -h,--help显示此帮助并退出 -V,--version输出版本信息并退出# 不加用户名的nologin shell[xianyucentos-xianyu ~11:42:53]$su密码# 大部分环境变量仍为xianyu[rootcentos-xianyu xianyu11:42:57]# env | grep xianyuHOSTNAMEcentos-xianyuUSERxianyuPATH/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/xianyu/.local/bin:/home/xianyu/binMAIL/var/spool/mail/xianyuPWD/home/xianyuLOGNAMExianyuXDG_DATA_DIRS/home/xianyu/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share# 不加用户名的login shell[xianyucentos-xianyu ~11:44:43]$su-l密码# 环境变量都更改为root[rootcentos-xianyu ~11:45:42]# env | grep rootUSERrootMAIL/var/spool/mail/rootPATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binPWD/rootHOME/rootLOGNAMErootXDG_DATA_DIRS/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/shareXAUTHORITY/root/.xauthc8rjtc# 添加一个新用户 并设置密码rootcentos-xianyu ~11:48:18]# useradd cxk[rootcentos-xianyu ~11:48:24]# echo redhat | passwd --stdin cxk更改用户 cxk 的密码 。 passwd所有的身份验证令牌已经成功更新。[rootcentos-xianyu ~11:49:43]# grep cxk /etc/passwdcxk:x:1004:1004::/home/cxk:/bin/bash# 以用户cxk身份执行命令[rootcentos-xianyu ~11:51:32]# su -l cxk -c iduid1004(cxk)gid1004(cxk)组1004(cxk)环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023[rootcentos-xianyu ~11:51:56]# su -l cxk -c cat /etc/hostnamecentos-xianyu# login shell情况下创建文件[rootcentos-xianyu ~11:52:49]# su -l cxk -c touch ctrl# 创建的文件位置在cxk家目录[rootcentos-xianyu ~11:56:05]# ls -a ~cxk....bash_logout .bash_profile .bashrc ctrl .mozilla# nologin shell情况下创建文件[rootcentos-xianyu ~11:56:25]# su cxk -c touch ctrl1touch: 无法创建ctrl1:权限不够# nologin shell 执行当前位置/root不变导致cxk用户无权创建# 切换nologin shell账户[rootcentos-xianyu ~11:58:30]# grep adm /etc/passwdadm:x:3:4:adm:/var/adm:/sbin/nologin[rootcentos-xianyu ~12:01:24]# su -l adm -c idThis account is currently not available.# 指定shell后执行命令[rootcentos-xianyu ~12:01:41]# su -l adm -c id -s /bin/bashuid3(adm)gid4(adm)组4(adm)环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023sudo命令功能:核心功能是允许普通用户以超级管理员root或其他指定用户的权限去执行特定的命令# 有sudo权限的用户输入自己的密码确认是否是本人在操作[xianyucentos-xianyu ~12:29:46]$sudoid[sudo]xianyu 的密码uid0(root)gid0(root)组0(root)环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023# uid0(root)证明执行命令时的真实身份是root# 无sudo权限的用户[xianyu111centos-xianyu ~12:31:55]$sudoid我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点#1) 尊重别人的隐私。#2) 输入前要先考虑(后果和风险)。#3) 权力越大责任越大。[sudo]xianyu111 的密码 xianyu111 不在 sudoers 文件中。此事将被报告。sudo中配置[rootcentos-xianyu ~12:33:12]# export EDITORvim[rootcentos-xianyu ~12:33:17]# visudo# 其中有三条记录 root,xianyu以及wheel组中的用户可以以任何用户身份执行任何命令rootALL(ALL)ALL xianyuALL(ALL)ALL %wheelALL(ALL)ALL# 在sudoers文件中加上用户cxkcxkALL(ALL)ALL# 测试[cxkcentos-xianyu ~12:38:44]$sudoid[sudo]cxk 的密码uid0(root)gid0(root)组0(root)环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023# 更改sudoers文件中cxk的记录为cxkALL(ALL)NOPASSWD:ALL# 用户cxk可在不输入密码的情况下直接执行命令# 测试[cxkcentos-xianyu ~12:42:25]$sudoiduid0(root)gid0(root)组0(root)环境unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023# 再次更改sudoers文件中cxk的记录为cxkALL(ALL)/sbin/useradd,/sbin/usermod,/sbin/userdel# 用户只能获得执行特定命令的权限# 测试[cxkcentos-xianyu ~12:48:14]$sudoid[sudo]cxk 的密码 对不起用户 cxk 无权以 root 的身份在 centos-xianyu 上执行 /bin/id。[cxkcentos-xianyu ~12:51:09]$sudousermod-aGwheel cxk[sudo]cxk 的密码[cxkcentos-xianyu ~12:52:59]$grepcxk /etc/group wheel:x:10:cxk cxk:x:1004:主配置文件/etc/sudoers正常情况不要修改从配置文件/etc/sudoer.d/*如果想添加配置在此处添加# 示例[rootcentos-xianyu ~12:56:35]# echo cxk ALL(ALL) /sbin/useradd,/sbin/usermod,/sbin/userdel /etc/sudoers.d/cxk[rootcentos-xianyu ~12:57:26]# cat /etc/sudoers.d/cxkcxkALL(ALL)/sbin/useradd,/sbin/usermod,/sbin/userdel