linux常用命令(8)——用户管理
博客主页:christine-rr-CSDN博客
hi,大家好,我是christine-rr ! 今天来分享一下linux常用命令——用户管理
linux常用命令
文章目录
- linux常用命令
- 八、用户管理
- 1. user add 创建用户账户
- 常用选项
- 实操示例
- 2. passwd :修改用户密码
- 常用选项
- 实操示例
- 3.su :切换用户
- 常用选项
- 实操示例
- 注意事项
- 4. id :显示用户详细信息
- 常用选项
- 实操示例
- 5. whoami:查看当前用户
- 实操示例
- 6. who :显示当前在线用户
- 常用选项
- 实操示例
- 7. hostname:查看 / 修改主机名
- 常用选项
- 实操示例
八、用户管理
1. user add 创建用户账户
useradd
是 Linux 中用于创建新系统用户的核心命令,需 root 权限(可通过 sudo
执行)。默认情况下,创建用户时会自动生成对应的用户组(与用户名同名)、家目录(/home/用户名
)和登录 Shell(如 /bin/bash
)。
常用选项
选项 | 功能说明 |
---|---|
-m /–create-home | 强制创建用户的家目录(默认已开启,部分精简系统需显式指定) |
-s / --shell | 指定用户的登录 Shell(如 /bin/bash 可登录,/sbin/nologin 禁止登录) |
-g / --gid | 指定用户的初始组(需提前存在,默认创建同名组) |
-G / --groups | 指定用户的附加组(多个组用逗号分隔,扩展用户权限) |
-d / --home-dir | 自定义用户家目录路径(默认 /home/用户名 ) |
-r / --system | 创建系统用户(用于运行服务,UID 通常小于 1000,无家目录) |
实操示例
sudo useradd zhangsan # 创建普通用户 `zhangsan`,自动生成家目录和同名组sudo useradd -s /bin/bash -G sudo lisi #创建用户 `lisi`,指定登录 Shell 为 `/bin/bash`,附加组为 `sudo`(获得管理员权限)sudo useradd -r mysql #创建系统用户 `mysql`(用于运行 MySQL 服务,无家目录)cat /etc/passwd | grep zhangsan #查看新用户是否创建成功(检查 `/etc/passwd` 文件,该文件存储所有用户信息)
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash #输出示例
2. passwd :修改用户密码
passwd
用于设置或修改用户密码,普通用户仅可修改自身密码,root
用户可修改所有用户密码(包括强制重置)。Linux 密码默认要求:至少 8 位、包含字母 + 数字 + 特殊字符(可通过 /etc/login.defs
调整策略)。
常用选项
选项 | 功能说明 |
---|---|
无选项 | 普通用户执行时,直接修改自身密码(需输入旧密码验证) |
用户名 | root 用户修改指定用户的密码(无需旧密码) |
-l / --lock | 锁定用户账户(禁止登录,密码前加 ! 标记) |
-u / --unlock | 解锁被锁定的用户账户 |
-d / --delete | 删除用户密码(使账户无密码,不建议生产环境使用) |
-e / --expire | 强制用户下次登录时必须修改密码 |
实操示例
-
普通用户
zhangsan
修改自身密码:执行
passwd
→ 输入旧密码 → 输入新密码(输入时不显示,需确认两次)。 -
root 用户重置
lisi
的密码(无需旧密码):sudo passwd lisi
直接输入新密码并确认,适合用户忘记密码的场景。
-
锁定
zhangsan
账户(禁止登录):sudo passwd -l zhangsan
-
强制
lisi
下次登录时改密码:sudo passwd -e lisi
3.su :切换用户
su
(substitute user)用于切换当前登录用户的身份,分为完全切换和非完全切换:
- 完全切换:加载目标用户的环境变量(如家目录、Shell 配置),格式为
su - 用户名
; - 非完全切换:仅切换用户身份,保留当前环境变量,格式为
su 用户名
(不推荐,易出现权限异常)。
常用选项
选项 | 功能说明 |
---|---|
- / --login | 完全切换用户环境(等同于 su - 用户名 ) |
-c / --command | 切换用户后执行单次命令,执行完返回原用户 |
无选项 | 非完全切换(仅切换 UID/GID,保留当前目录和环境变量) |
实操示例
-
从普通用户切换到
root
(完全切换,加载 root 环境):su - root
→ 输入 root 密码(若系统默认禁用 root 直接登录,需用sudo su -
,无需单独输入 root 密码)。 -
切换到
zhangsan
并执行ls /home/zhangsan
命令,执行后返回原用户:su - zhangsan -c "ls /home/zhangsan"
-
非完全切换到
lisi
(仅身份切换,当前目录仍为原用户目录):su lisi
→ 输入 lisi 密码,执行pwd
会发现目录未变。
注意事项
- 普通用户切换到
root
需知道 root 密码,而sudo su -
仅需当前用户在sudo
组(更安全,推荐生产环境使用); - 切换用户后,用
exit
命令可返回原用户身份。
4. id :显示用户详细信息
id
命令用于查看当前用户或指定用户的 UID(用户 ID)、GID(组 ID)、所属组列表 等核心信息,无需权限,所有用户均可执行。
常用选项
选项 | 功能说明 |
---|---|
无选项 | 显示当前登录用户的信息 |
用户名 | 显示指定用户的信息 |
-u / --user | 仅显示用户的 UID |
-g / --group | 仅显示用户的初始组 GID |
-G / --groups | 仅显示用户的所有组(初始组 + 附加组)的 GID |
-n / --name | 与 -u /-g /-G 搭配,显示组名 / 用户名(而非 ID) |
实操示例
-
查看当前用户的完整信息:
id
输出示例(当前为
zhangsan
):uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan),27(sudo)
(说明:
zhangsan
的 UID/GID 为 1001,附加组为sudo
,有管理员权限)。 -
查看
mysql
用户的 UID 和用户名:
id -un mysql
→ 输出mysql
(-u
显示 UID,-n
转成用户名)。 -
查看
lisi
所属的所有组名:
id -Gn lisi
→ 输出lisi sudo
(-G
显示所有组 GID,-n
转成组名)。
5. whoami:查看当前用户
whoami
是最简单的用户查询命令,仅显示当前登录的用户名,无任何选项,所有用户均可执行。
- 场景:切换用户后快速确认当前身份,或在脚本中判断执行用户。
实操示例
-
普通用户登录时执行:
whoami
→ 输出zhangsan
。 -
切换到
root
后执行:
su - root
→whoami
→ 输出root
。 -
与
id
对比:whoami
仅显用户名,id
显完整的 UID/GID 信息,按需选择。
6. who :显示当前在线用户
who
命令用于查看当前系统中所有已登录的用户,包括登录时间、登录终端(如 tty1
本地终端、pts/0
远程终端)、登录 IP(远程登录时显示)等信息,无权限限制。
常用选项
选项 | 功能说明 |
---|---|
无选项 | 显示在线用户的基础信息(用户名、终端、登录时间、IP) |
-r / --runlevel | 显示当前系统的运行级别(如 5 表示图形界面,3 表示命令行) |
-b / --boot | 显示系统的启动时间 |
-H / --heading | 显示表头(列名:NAME 用户名、LINE 终端、TIME 登录时间、COMMENT IP) |
实操示例
-
查看当前在线用户(带表头):
who -H
输出示例:
NAME LINE TIME COMMENT zhangsan tty1 2024-05-20 09:30 lisi pts/0 2024-05-20 10:15 192.168.1.100
说明:
zhangsan
通过本地终端tty1
登录,lisi
通过远程 IP192.168.1.100
登录。 -
查看系统启动时间:
who -b
→ 输出system boot 2024-05-20 08:00
。 -
查看系统运行级别:
who -r
→ 输出run-level 5 2024-05-20 08:00
。
7. hostname:查看 / 修改主机名
hostname
用于查看或临时修改系统的主机名(主机名是系统的标识,如 server-01
,远程登录时会显示)。
- 临时修改:重启后失效;
- 永久修改:需编辑
/etc/hostname
文件(CentOS/RHEL 还需改/etc/sysconfig/network
)。
常用选项
选项 | 功能说明 |
---|---|
无选项 | 查看当前主机名 |
新主机名 | 临时修改主机名为 “新主机名”(需 root 权限,重启失效) |
-i / --ip-address | 查看主机名对应的 IP 地址(需 DNS 或 /etc/hosts 配置映射) |
-f / --fqdn | 查看主机的完全限定域名(FQDN,如 server-01.example.com ) |
实操示例
-
查看当前主机名:
hostname
→ 输出localhost.localdomain
(默认初始主机名)。 -
临时修改主机名为
web-server
(重启后恢复):
sudo hostname web-server
→ 执行hostname
验证,输出web-server
。 -
永久修改主机名(以 Ubuntu 为例):
- 编辑
/etc/hostname
文件:sudo vim /etc/hostname
,将内容改为web-server
,保存退出; - 编辑
/etc/hosts
文件(添加主机名与 IP 的映射):
sudo vim /etc/hosts
→ 添加一行127.0.0.1 web-server
; - 重启系统生效:
sudo reboot
。
- 编辑
-
查看主机名对应的 IP:
hostname -i
→ 输出127.0.0.1 192.168.1.200
(需提前配置/etc/hosts
)。