惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cloudbric
Cloudbric
V
Visual Studio Blog
L
LangChain Blog
A
About on SuperTechFans
B
Blog
T
Tenable Blog
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Palo Alto Networks Blog
U
Unit 42
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
C
Check Point Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
S
Securelist
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Latest news
Latest news
GbyAI
GbyAI
T
Troy Hunt's Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V2EX - 技术
V2EX - 技术
小众软件
小众软件
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed

博客园 - xiashengwang

Rocky Linux 9 安装docker Rocky Linux 9 与Centos区别,以及软件安装dnf命令 《Linux 基础点滴》:(17)SSH 密钥生成与管理 – 免密登录的利器 Linux服务器安全登录:从入门到实践 putty 基础 《Linux 基础点滴》:(16)firewalld 防火墙管理命令 《Linux 基础点滴》:(14)定时任务 – 用 crontab 自动化 《Linux 基础点滴》:(13)文本编辑入门 – 使用 Vim 《Linux 基础点滴》:(12)tldr – 简化版命令手册 《Linux 基础点滴》:(11)系统信息与资源监控 – 掌握服务器状态 《Linux 基础点滴》:(10)压缩与打包 – tar 的艺术 《Linux 基础点滴》:(9)查找与过滤 – find, grep, 管道 《Linux 基础点滴》:(8)网络基础 – 查看 IP、连通性与端口 《Linux 基础点滴》:(7)进程管理 – 查看与控制运行中的程序 《Linux 基础点滴》:(6)文件权限与所有者 – 保护你的文件 《Linux 基础点滴》:(5)文件与目录操作 – 增删改查必会命令 《Linux 基础点滴》:(4)磁盘空间查看 – df 和 du 的妙用 《Linux 基础点滴》:(3)Linux 文件系统概览 – 一切皆文件 《Linux 基础点滴》:(2)SSH 连接与基础命令 – 从登录到第一次操作 《Linux 基础点滴》:(1)初识 Linux 大家族 – 发行版分类与选择 docker学习(7)-docker compose 文件 docker学习(11)- 容器的日志(log) docker学习(10)-利用Github Action 自动化部署 docker学习(9)-Docker Swarm + Nginx 跨机器负载均衡 docker学习(8)-从 Windows 开发到 Linux 部署 docker学习(6)-数据持久化与网络通信 学会 Git Tag,让版本管理不再混乱 docker学习(5)-Dockerfile docker学习(4)-Docker常用命令 docker学习(3)-一个简单的例子 docker学习(2)-安装 docker学习(1)-基本概念 Github 使用 Self-hosted Runner 实现服务器自动化部署 github创建分支 + Pull Request 合并 Git Rebase vs Git Merge:深入理解与实战选择 Git 系统学习教程:从零到团队协作 AI学习笔记(2)-OpenClaw安装 windbg分析dmp文件 docker desktop 和 Vmware冲突的解决办法
《Linux 基础点滴》:(15)用户管理 – 创建、删除、权限与 sudo
xiashengwang · 2026-04-25 · via 博客园 - xiashengwang

2026-04-25 11:04  xiashengwang  阅读(25)  评论()    收藏  举报

《Linux 基础点滴》:(15)用户管理 – 创建、删除、权限与 sudo

学习目标

  • 理解 Linux 的用户和组概念
  • 学会创建、修改、删除用户
  • 掌握 sudo 的作用及配置方法
  • 能够查看当前登录用户及系统中的所有用户

核心概念

1. 用户与组

  • Linux 是多用户系统,每个进程都归属于一个用户(UID)和一个组(GID)。
  • UID:0 代表 root(超级管理员),1–999 通常是系统用户,1000+ 给普通用户。
  • /etc/passwd:存储用户基本信息(用户名、UID、家目录、shell 等)。
  • /etc/shadow:存储加密密码(仅 root 可读)。
  • /etc/group:存储组信息。

2. sudo 的作用

  • sudo(superuser do):允许普通用户以 root(或其他用户)身份执行命令。
  • 无需知道 root 密码,只需输入自己的密码(可配置免密)。
  • 通过 /etc/sudoers 文件控制权限,推荐使用 visudo 编辑。

3. 常用用户管理命令速查表

命令 作用 示例
useradd 创建用户 useradd -m -s /bin/bash alice
passwd 设置或修改密码 passwd alice
usermod 修改用户属性 usermod -aG wheel alice
userdel 删除用户 userdel -r alice
id 查看用户 UID/GID id alice
whoami 当前用户名
who 当前登录的用户列表
w 更详细的登录信息
groups 查看用户所属组 groups alice
groupadd 创建组 groupadd dev

动手实验

实验 1:创建用户并设置密码

# 需要 root 或 sudo 权限
sudo useradd -m -s /bin/bash alice
# -m:创建家目录 /home/alice
# -s:指定登录 shell

sudo passwd alice
# 输入两次密码

实验 2:查看用户信息

# 查看 /etc/passwd 最后一行
tail -1 /etc/passwd
# 输出:alice:x:1001:1001::/home/alice:/bin/bash

id alice
# uid=1001(alice) gid=1001(alice) groups=1001(alice)

实验 3:添加用户到 sudo 组(wheel)

在 CentOS 中,默认 wheel 组的用户可以使用 sudo。

sudo usermod -aG wheel alice
# -a 追加,-G 指定附加组

# 验证
groups alice
# 输出:alice : alice wheel

实验 4:配置 sudo 权限(若 wheel 未启用)

# 以 root 运行 visudo
visudo
# 找到下面一行,取消注释:
%wheel ALL=(ALL) ALL
# 保存退出(:wq)

然后切换到 alice 用户测试:

su - alice
sudo whoami
# 输入 alice 的密码,输出 root

实验 5:删除用户

# 彻底删除用户及其家目录和邮件池
sudo userdel -r alice
# 检查是否删除
id alice
# id: alice: no such user

实验 6:查看当前登录用户及系统所有用户

# 当前登录的用户
whoami
who
w

# 系统中的所有用户(从 /etc/passwd 提取)
cat /etc/passwd | cut -d: -f1
# 或者只显示 UID >= 1000 的普通用户
awk -F: '$3>=1000 {print $1}' /etc/passwd

常见错误

  • useradd 没有 -m:不会创建家目录,登录后可能报错 Could not chdir to home directory
  • 忘记 -a 直接 usermod -G:会覆盖用户的附加组,导致用户离开原有组(如 wheel)。
  • visudo 语法错误:保存时会检查,若错误会提示,不要强行退出,按 e 重新编辑。
  • 删除用户时只用 userdel 不加 -r:家目录残留占用磁盘。

思考题(含答案)

1. /etc/passwd 文件中每一行的七个字段分别代表什么?

答案:
每一行代表一个用户,字段以冒号 : 分隔:

  1. 用户名:登录时使用的名称。
  2. 密码占位符:通常为 x,表示加密密码存储在 /etc/shadow 中。
  3. UID:用户 ID,0 为 root。
  4. GID:用户的主组 ID(对应 /etc/group 中的组)。
  5. 用户描述信息:如全名、电话等(可选,常为空)。
  6. 家目录:用户登录后所在的目录,例如 /home/alice
  7. 登录 shell:用户登录后使用的命令解释器,例如 /bin/bash;若为 /sbin/nologin 则禁止登录。

2. 如何禁止某个用户登录系统?提示:修改 /etc/passwd 中的 shell 为 /sbin/nologin。

答案:
使用 usermod 命令修改用户的登录 shell:

sudo usermod -s /sbin/nologin alice

或者直接编辑 /etc/passwd(不推荐,需非常谨慎)将最后一列的 /bin/bash 改为 /sbin/nologin
修改后,用户 alice 无法登录系统,但进程仍可以以该用户身份运行(如服务账户)。
若要彻底禁止用户使用(包括 su 切换等),可以配合 passwd -l alice 锁定密码。

3. 如何让某个用户执行特定命令时免密码 sudo?

答案:
使用 visudo 编辑 /etc/sudoers,添加类似以下格式的行:

alice ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx, /bin/kill
  • alice:用户名。
  • ALL:所有主机。
  • (ALL):可以以任何用户身份执行。
  • NOPASSWD::免密码标志。
  • 后面跟逗号分隔的绝对路径命令列表

保存后,alice 执行 sudo systemctl restart nginxsudo kill 1234 时无需输入密码,执行其他命令仍需密码。

进阶知识(可选扩展)

  • 批量创建用户:使用 newusers 命令从文件导入。
  • 用户密码策略chage 命令管理密码过期时间。
  • sudo 别名:可定义命令别名或用户别名,简化配置。