大纲
| 操作类型 | 命令示例 | 功能描述 | 关键选项说明 |
|---|---|---|---|
| 创建用户组 | groupadd -g 1001 groupname |
创建指定 GID 的用户组 | -g 指定组 ID |
| 创建用户 | useradd -m -s /bin/bash username |
创建用户并自动生成家目录,指定登录 Shell | -m 创建家目录,-s 指定 Shell |
| 设置密码 | passwd username |
为用户设置密码(需交互输入) | 无选项直接修改,-l 锁定用户 |
| 修改用户信息 | usermod -G group1,group2 username |
将用户添加到附加组 | -G 指定附加组,-a 保留原组 |
| 删除用户 | userdel -r username |
删除用户并同时删除家目录及邮箱 | -r 递归删除用户数据 |
| 用户切换 | su 用户 |
切换用户 | - |
| 用户权限 | sudo |
权限临时提升与精细控制 |
groupadd
-
参数
参数 作用 -g指定组ID(GID),需唯一(除非配合 -o)-r创建系统组,GID默认小于500 -o允许GID不唯一 -f若组已存在,强制退出且不报错 -
示例
-
创建指定GID的普通组
csharp[root@localhost ~]# groupadd -g 1000 testgroup # 作用:创建名为testgroup的组,GID设为1000 -
创建系统组
csharp[root@localhost ~]# groupadd -r sysgroup # 作用:创建系统组sysgroup,GID自动分配且小于500
-
-
注意事项
-
组信息存储在
/etc/group文件中makefile[root@localhost ~]# cat /etc/group 格式为"组名:密码:GID:成员" testgroup:x:1000: -
避免使用
-o随意创建重复GID,可能导致权限冲突。
-
useradd
-
参数
参数 功能描述 示例用法 -g指定用户主组(名称或ID) useradd -g developers john-d设置用户主目录路径 useradd -d /home/john john-m自动创建主目录(默认不创建) useradd -m john-s指定登录shell(如/bin/bash) useradd -s /bin/bash john-r创建系统用户(UID < 1000) useradd -r mysql-u手动指定用户UID(需唯一) useradd -u 1005 john-G添加用户到附加组(逗号分隔) useradd -G sudo,admins john -
示例
-
创建普通用户并指定主组和家目录
arduino[root@localhost ~]# useradd -g testgroup -d /home/xiong -m xiong 说明:创建用户xiong,属组为testgroup,主目录为/home/xiong(-m确保目录自动创建 -
直接创建用户
ini# 啥都不指定,会自动创建主目录/home/xiong2,属组xiong2 [root@localhost ~]# useradd xiong2 [root@localhost ~]# ls /home/ xiong xiong2 [root@localhost ~]# ls /home/xiong2 [root@localhost ~]# id xiong uid=1000(xiong) gid=1000(testgroup) 组=1000(testgroup) [root@localhost ~]# id xiong2 uid=1001(xiong2) gid=1001(xiong2) 组=1001(xiong2) [root@localhost ~]# tail -n 1 /etc/group xiong2:x:1001: -
创建系统用户并禁用登录shell
ini# 创建个 系统用户xiong3 , 不允许登陆 [root@localhost ~]# useradd -r -s /sbin/nologin xiong3 [root@localhost ~]# id xiong3 uid=997(xiong3) gid=993(xiong3) 组=993(xiong3)
-
passwd
-
参数
参数 功能描述 示例 权限要求 无参数 修改当前用户密码 passwd普通用户 USERNAME修改指定用户密码 passwd linuxtechiroot -l锁定用户账户(密码前加 !)passwd -l linuxtechiroot -u解锁用户账户 passwd -u linuxtechiroot -d删除用户密码(登录无需密码) passwd -d linuxtechiroot -e强制用户下次登录改密码 passwd -e linuxtechiroot -S显示用户密码状态 passwd -S linuxtechiroot -x DAYS设置密码最长有效期(天) passwd -x 90 linuxtechiroot -n DAYS设置密码最短修改间隔(天) passwd -n 7 linuxtechiroot -w DAYS设置密码过期前警告天数 passwd -w 7 linuxtechiroot -
示例
-
修改密码
csharp[root@localhost ~]# passwd xiong2 <-- 直接输 更改用户 xiong2 的密码 。 新的 密码: 无效的密码: 密码少于 8 个字符 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 -
单用户非交互修改(passwd + echo)
sql[root@localhost ~]# echo "xiong" | passwd --stdin xiong3 更改用户 xiong3 的密码 。 passwd:所有的身份验证令牌已经成功更新。 -
多用户批量修改(chpasswd + echo)
swift命令:echo -e "user1:pass1\nuser2:pass2" | chpasswd (-e启用转义符\n分隔用户) [root@localhost ~]# echo -e "xiong2:passwd1\xiong3:passwd1" | chpasswd
-
usermod
-
参数
参数 功能描述 示例命令 -l修改用户名 usermod -l newname oldname-g设置主要组 usermod -g staff user1-G添加附加组 usermod -G sudo,dev user1-d修改家目录 usermod -d /newhome user1-s更改登录 Shell usermod -s /bin/zsh user1-L/-U锁定/解锁账号 usermod -L user1usermod -U user1-u修改 UID usermod -u 1005 user1 -
示例
-
修改用户名
ini[root@localhost ~]# groupadd -g 1010 user1 [root@localhost ~]# useradd -g 1010 -u 1010 user1 [root@localhost ~]# usermod -l usern1 user1 [root@localhost ~]# id usern1 uid=1010(usern1) gid=1010(user1) 组=1010(user1) # 注意:需确保用户未登录,且手动更新家目录和邮件地址 -
管理用户组
- 设主要组:
usermod -g developers user1 - 追加附加组:
usermod -aG sudo user1(必须加-a避免覆盖原附加组)。
- 设主要组:
-
userdel
-
参数
参数 功能描述 注意事项 -r 删除用户、家目录及邮件池 避免误删重要文件,建议先备份 -f 强制删除用户(即使用户已登录) 可能导致系统状态不一致,谨慎使用 -
仅删除用户账号
csharp[root@localhost ~]# userdel xiong2 [root@localhost ~]# ls /home/ user1 xiong xiong2 <-- 注意这样删除会保留/home/xiong2和/var/spool/mail/xiong2 -
删除用户及家目录
csharp[root@localhost ~]# useradd xiogn2 user1 xiogn2 xiong xiong2 [root@localhost ~]# userdel -r xiogn2 [root@localhost ~]# ls /home/ user1 xiong xiong2 <-- /home/xiong2和/var/spool/mail/xiong2都会删除 -
强制删除已登录用户
csharp[root@localhost ~]# sudo userdel -f xiong4 # 即使 xiong4 当前在线,仍强制删除(但不终止其进程
su
-
参数
参数 功能描述 适用场景 -或-l切换用户并加载目标用户完整环境(HOME、PATH等),等同于重新登录 需完整权限操作时 -c <命令>以目标用户身份执行单个命令后返回原用户 临时执行高权限命令 -s <shell>指定切换后使用的shell环境(需目标用户shell允许) 调试或特殊shell需求 -p或-m保留当前用户环境变量(HOME、PATH等不变) 需临时权限但保持当前环境时 -
示例
-
普通用户切换至root用户(完整环境)
csharp[root@localhost ~]# su - root # 输入root密码后切换,工作目录变为/root,环境变量更新为root的配置 -
以root身份执行单命令
csharp[root@localhost ~]# su -c "ls -l " root # 执行更新命令后自动返回原用户
-
sudo
sudo(superuser do)的核心价值在于权限临时提升 与精细控制 ,无需暴露root密码即可让普通用户执行特定管理命令。其权限基于
/etc/sudoers配置
-
参数
选项 功能描述 示例 -l列出当前用户可执行的sudo命令 sudo -l-u指定执行命令的用户(默认root) sudo -u tom whoami-i启动root登录shell(执行多个命令) sudo -i-v延长sudo会话有效期(无需执行命令) sudo -v-k立即终止当前sudo会话 sudo -k -
示例
-
完整示例
ruby# 1. 使用root创建用户 [root@localhost root]# useradd xiong4 # 2. 赋予 xiong4 用户root权限 [root@localhost root]# vim /etc/sudoers root ALL=(ALL) ALL xiong4 ALL=(ALL) ALL <-- xiong4设置为root权限 # 保存 # 3. 切换到 xiong4 用户登陆 [xiong4@localhost ~]$ sudo -l 用户 xiong4 可以在 localhost 上运行以下命令: (ALL) ALL # 4. 每次执行sodu命令都需要输入用户密码才能执行,那怎么可以做到执行sudo不输入密码呢? xiong4 ALL=(ALL) NOPASSWD:/usr/sbin/useradd
-
扩展
用户和组配置文件
-
/etc/passwd:用户及其属性信息(名称、UID、主组ID等)
如root : x:0:0:root:/root:/bin/bash
passwd文件 说明 login name 登录用名(xiong) passwd 密码 (x) UID 用户身份编号 (1000) GID 登录默认所在组编号 (1000) GECOS 用户全名或注释 home directory 用户主目录 (/home/xiong) shell 用户默认使用shell (/bin/bash) -
/etc/group:组及其属性信息
-
/etc/shadow:用户密码及其相关属性
-
/etc/gshadow:组密码及其相关属性