博客主页:christine-rr-CSDN博客 hi,大家好,我是christine-rr ! 今天来分享一下linux常用命令——用户管理
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 #输出示例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 lisisu(substitute user)用于切换当前登录用户的身份,分为完全切换和非完全切换:
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 命令可返回原用户身份。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 转成组名)。
whoami 是最简单的用户查询命令,仅显示当前登录的用户名,无任何选项,所有用户均可执行。
whoami → 输出 zhangsan。
root 后执行:
su - root → whoami → 输出 root。
id 对比:whoami 仅显用户名,id 显完整的 UID/GID 信息,按需选择。
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 通过远程 IP 192.168.1.100 登录。
查看系统启动时间:
who -b → 输出 system boot 2024-05-20 08:00。
查看系统运行级别:
who -r → 输出 run-level 5 2024-05-20 08:00。
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。
/etc/hostname 文件:sudo vim /etc/hostname,将内容改为 web-server,保存退出;/etc/hosts 文件(添加主机名与 IP 的映射):
sudo vim /etc/hosts → 添加一行 127.0.0.1 web-server;sudo reboot。hostname -i → 输出 127.0.0.1 192.168.1.200(需提前配置 /etc/hosts)。