Linux:这啥命令?这台服务器我说了算-用户、用户组与 sudo——“凭什么它能改,我不能?”

举报
yd_240046519 发表于 2026/10/29 11:02:16 2026/10/29
【摘要】 《Linux:从“这啥命令?”到“这台服务器我说了算”》 第三章:用户、用户组与 sudo——“凭什么它能改,我不能?”上一章我们已经会创建、复制、移动、删除文件,也认识了基础权限。但你很快会遇到一个经典场面:Permission denied你心想:“这文件就在我面前,凭什么不让我改?”Linux 的回答很简单:因为你是谁,很重要。这一章,我们就把“你是谁、你属于谁、你能干什么”一次讲清...

《Linux:从“这啥命令?”到“这台服务器我说了算”》

第三章:用户、用户组与 sudo——“凭什么它能改,我不能?”

上一章我们已经会创建、复制、移动、删除文件,也认识了基础权限。

但你很快会遇到一个经典场面:

Permission denied

你心想:“这文件就在我面前,凭什么不让我改?”

Linux 的回答很简单:因为你是谁,很重要。

这一章,我们就把“你是谁、你属于谁、你能干什么”一次讲清楚。


1. 先确认身份:我是谁?

查看当前用户:

whoami

再看更完整的身份信息:

id

输出可能类似:

uid=1000/alice gid=1000/alice groups=1000/alice,27/sudo

这里主要看三件事:

uid      用户 ID
gid      主用户组 ID
groups   当前用户属于哪些组

Linux 内部真正认的是 UID、GID,用户名更多是给人看的“昵称”。


2. root:服务器里的“终极管理员”

Linux 中权限最高的用户叫:

root

它的 UID 通常是:

0

root 基本可以修改系统里的任何东西。

听起来很爽,但也意味着:普通用户删错一个文件,可能只是项目坏了;root 删错一个文件,系统可能直接下班。

所以日常操作通常不用 root 登录,而是需要管理员权限时临时使用 sudo。


3. sudo:借我一分钟管理员权限

例如更新软件包:

sudo apt update

系统可能要求输入当前用户密码。

sudo 可以理解为:

“这条命令,请暂时用更高权限执行。”

查看自己是否能使用 sudo:

sudo -l

注意:不要遇到权限问题就条件反射:

sudo ...

先想清楚为什么没权限。否则 sudo 很容易从“解决问题”升级成“制造更大的问题”。


4. 用户都记录在哪?

Linux 的用户信息主要记录在:

/etc/passwd

可以看看:

cat /etc/passwd

其中一行可能长这样:

alice:x:1000:1000:Alice:/home/alice:/bin/bash

字段用 : 分隔,大致表示:

用户名:密码占位:UID:GID:描述:家目录:登录 Shell

真正的密码哈希通常不放在这里,而是在:

/etc/shadow

普通用户通常没有权限直接查看它。

这是正常的。密码文件要是人人可读,那安全性就只剩气氛了。


5. 创建一个新用户

在 Ubuntu / Debian 系发行版里,可以用:

sudo adduser bob

系统会引导你设置密码和一些信息。

创建完成后检查:

id bob

切换到这个用户:

su - bob

回到原用户:

exit

su - bob 中的 - 很重要,它会一起切换到 bob 的登录环境和家目录。


6. 用户组:权限别一个人一个人发

如果服务器有 20 个开发人员,而某个目录需要让大家共同访问,一个个改权限会很痛苦。

这时就可以使用用户组。

创建一个组:

sudo groupadd developers

把 bob 加进去:

sudo usermod -aG developers bob

这里最值得记住的是:

-a   append,追加
-G   附加用户组

尤其别随便漏掉 -a。否则某些情况下,你不是“再加一个组”,而是在给用户的附加组名单来一次大换血。

查看 bob 属于哪些组:

groups bob

7. 文件到底归谁?

创建一个测试文件:

touch demo.txt
ls -l demo.txt

可能看到:

-rw-r--r-- 1 alice alice 0 Oct 29 10:00 demo.txt

中间这两个 alice 分别代表:

文件所有者
文件所属组

修改所有者:

sudo chown bob demo.txt

同时修改所有者和所属组:

sudo chown bob:developers demo.txt

只修改所属组:

sudo chgrp developers demo.txt

然后再次检查:

ls -l demo.txt

8. chmod 和 chown 别搞混

这两个命令非常容易混:

chmod   改“能做什么”
chown   改“这个东西是谁的”

例如:

chmod 640 demo.txt

表示:

所有者   rw-  可读可写
所属组   r--  只读
其他人   ---  无权限

而:

sudo chown bob:developers demo.txt

修改的是文件主人和所属组。

一句话记忆:

chmod 管权限,chown 管归属。


9. 一个非常常见的坑:sudo 创建的文件

假设你执行:

sudo touch config.ini

再看:

ls -l config.ini

你可能会发现文件属于:

root root

然后普通用户再编辑:

nano config.ini

结果:

Permission denied

这不是 Linux 针对你,而是你刚才亲手把文件送给了 root。

如果这个文件本来就应该属于当前用户,可以修正:

sudo chown $USER:$USER config.ini

所以,不要没事就在命令前加 sudo。


10. 删除用户,也要想清楚

删除用户:

sudo deluser bob

如果还想删除它的家目录:

sudo deluser --remove-home bob

执行前先确认里面有没有重要数据。

“删账号”和“删账号 + 删家”不是一个力度,后者属于搬家时顺便把房子拆了。


11. 本章实战:搭一个开发共享目录

目标:创建 developers 组,让组成员可以共同使用 /srv/project。

sudo groupadd developers
sudo usermod -aG developers $USER
sudo mkdir -p /srv/project
sudo chown $USER:developers /srv/project
sudo chmod 770 /srv/project

检查:

ls -ld /srv/project

你应该重点观察:

所有者
所属组
权限

如果刚把自己加入新用户组,当前终端可能还没刷新组信息。最简单的方式是退出当前会话后重新登录,再执行:

groups

12. 本章命令速查

命令 用途
whoami 查看当前用户
id 查看 UID、GID、用户组
groups 查看用户所属组
sudo 临时以高权限执行命令
sudo -l 查看 sudo 权限
adduser 创建用户
deluser 删除用户
groupadd 创建用户组
usermod -aG 把用户加入附加组
chown 修改文件所有者
chgrp 修改文件所属组
chmod 修改权限
su - 用户名 切换用户

13. 这一章你应该带走什么?

看到:

Permission denied

以后先别急着 sudo。

按这个顺序排查:

1. 我现在是谁?        → whoami / id
2. 文件是谁的?        → ls -l
3. 我属于哪个组?      → groups
4. 权限允许我操作吗?  → rwx
5. 真需要管理员权限吗?→ sudo

当你开始先分析权限,再决定是否提权,你就已经从“命令试试看”进化到了“知道自己在改什么”。

下一章我们继续往服务器真正的日常迈一步:

第四章:软件安装与包管理——“装个软件而已,怎么还有这么多姿势?”

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。