Linux 新手村Linux 新手村
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
🏠 首页
📖 教程
  • Linux 官网
  • Ubuntu 官网
  • CentOS 官网
  • 🚀 入门篇 - 欢迎来到 Linux 世界

    • 📚 长安的教程导航
    • 🐧 什么是 Linux?
    • 💿 安装 Linux
    • 🎉 首次开机
  • 🎯 基础篇 - 必备生存技能

    • ⌨️ 基础命令
    • 🗂️ 文件系统
    • 📝 文件操作
    • 👥 用户与权限
  • ⚔️ 进阶篇 - 成为高手之路

    • ⚔️ Vim 编辑器
    • 🤖 Shell 脚本
    • ⚙️ 进程与服务
    • 🌐 网络基础
  • 🏆 高级篇 - 突破自我

    • 💡 高级技巧
    • 🔧 故障排查
    • 🎭 日常案例与血泪教训

👥 用户与权限

大家好,我是长安!用户与权限是 Linux 的核心概念之一,理解了它你才能真正掌握 Linux。

🎯 本章目标

跟着长安读完这一章,你将了解:

  • Linux 的用户和用户组概念
  • 文件权限的含义和修改方法
  • sudo 的使用
  • 如何管理用户账户

🧑 用户与用户组

概念理解

Linux 是一个多用户系统,就像一个公司:

概念类比说明
用户(User)员工每个人都有自己的账号
用户组(Group)部门把用户分组管理
root老板/CEO拥有最高权限

查看用户信息

# 查看当前登录用户
whoami
# 输出:xiaoming

# 查看用户详细信息
id
# 输出:uid=1000(xiaoming) gid=1000(xiaoming) groups=1000(xiaoming),27(sudo)

# 查看所有用户
cat /etc/passwd

# 查看所有用户组
cat /etc/group

/etc/passwd 文件解析

# 格式:用户名:密码:UID:GID:描述:主目录:Shell
xiaoming:x:1000:1000:Xiao Ming,,,:/home/xiaoming:/bin/bash
│        │  │    │    │           │               │
│        │  │    │    │           │               └── 登录后使用的 Shell
│        │  │    │    │           └── 用户主目录
│        │  │    │    └── 用户描述信息
│        │  │    └── 用户组 ID
│        │  └── 用户 ID
│        └── 密码(x 表示加密存储在 /etc/shadow)
└── 用户名

💡 特殊用户

  • root:UID = 0,超级管理员
  • 系统用户:UID 1-999,运行系统服务
  • 普通用户:UID >= 1000,普通人

🔐 文件权限

权限的三个维度

Linux 文件权限分为三类人:

符号英文含义
uUser文件所有者(Owner)
gGroup所属组的成员
oOthers其他所有人
aAll所有人(u+g+o)

三种权限类型

符号数字含义对文件对目录
r4读取(Read)查看内容列出目录内容
w2写入(Write)修改内容创建/删除文件
x1执行(eXecute)运行程序进入目录
-0无权限--

查看权限

ls -l file.txt
# -rw-r--r-- 1 xiaoming xiaoming 1024 Jan 1 10:00 file.txt

解析:

-rw-r--r--
│├─┤├─┤├─┤
│ │  │  │
│ │  │  └── 其他人权限:r-- (只读)
│ │  └── 组权限:r-- (只读)
│ └── 所有者权限:rw- (读写)
└── 文件类型:- (普通文件)

权限的数字表示

把 r、w、x 转换成数字,相加得到权限值:

r = 4, w = 2, x = 1

rwx = 4 + 2 + 1 = 7  (读写执行)
rw- = 4 + 2 + 0 = 6  (读写)
r-x = 4 + 0 + 1 = 5  (读执行)
r-- = 4 + 0 + 0 = 4  (只读)

常见权限组合:

数字符号含义
755rwxr-xr-x所有者可读写执行,其他人可读执行
644rw-r--r--所有者可读写,其他人只读
777rwxrwxrwx所有人可读写执行(危险!)
700rwx------只有所有者可访问
600rw-------只有所有者可读写

chmod - 修改权限

数字方式(推荐):

# 设置权限为 755
chmod 755 script.sh

# 设置权限为 644
chmod 644 file.txt

# 递归修改目录及其内容
chmod -R 755 mydir/

符号方式:

# 给所有者添加执行权限
chmod u+x script.sh

# 给所有人添加读权限
chmod a+r file.txt

# 移除组的写权限
chmod g-w file.txt

# 设置具体权限
chmod u=rwx,g=rx,o=r file.txt

💡 常见场景

# 让脚本可执行
chmod +x script.sh
chmod 755 script.sh

# 保护私密文件
chmod 600 secret.txt

# 共享目录让组成员可写
chmod 775 shared_dir/

chown - 修改所有者

# 修改文件所有者
sudo chown newowner file.txt

# 修改所有者和组
sudo chown newowner:newgroup file.txt

# 只修改组
sudo chown :newgroup file.txt

# 递归修改
sudo chown -R newowner:newgroup mydir/

chgrp - 修改所属组

# 修改文件所属组
sudo chgrp newgroup file.txt

# 递归修改
sudo chgrp -R newgroup mydir/

🦸 sudo - 临时获取超级权限

sudo 让普通用户临时获得 root 权限。

# 以 root 身份运行命令
sudo apt update

# 切换到 root 用户
sudo su

# 以 root 身份编辑文件
sudo nano /etc/hosts

# 查看 sudo 权限
sudo -l

⚠️ sudo 注意事项

  1. 第一次使用需要输入你自己的密码(不是 root 密码)
  2. 密码有缓存时间(通常 15 分钟),之后要重新输入
  3. 不要养成所有命令都加 sudo 的习惯
  4. 能不用 sudo 就不用

添加用户到 sudo 组

# 把用户添加到 sudo 组
sudo usermod -aG sudo username

👤 用户管理

创建用户

# 创建用户(简单方式)
sudo useradd username

# 创建用户(推荐方式,自动创建主目录)
sudo useradd -m username

# 创建用户并指定 Shell
sudo useradd -m -s /bin/bash username

# 交互式创建用户(Ubuntu 推荐)
sudo adduser username

设置/修改密码

# 修改自己的密码
passwd

# 修改其他用户的密码(需要 root)
sudo passwd username

删除用户

# 删除用户(保留主目录)
sudo userdel username

# 删除用户及其主目录
sudo userdel -r username

修改用户信息

# 修改用户名
sudo usermod -l newname oldname

# 修改主目录
sudo usermod -d /new/home username

# 添加用户到组
sudo usermod -aG groupname username

# 修改用户 Shell
sudo usermod -s /bin/zsh username

用户组管理

# 创建组
sudo groupadd groupname

# 删除组
sudo groupdel groupname

# 把用户添加到组
sudo usermod -aG groupname username

# 从组中移除用户
sudo gpasswd -d username groupname

# 查看用户所属的组
groups username

🎭 特殊权限

SUID、SGID、Sticky Bit

除了基本的 rwx,还有三种特殊权限:

权限数字符号作用
SUID4s(在 u 位置)执行时获得文件所有者权限
SGID2s(在 g 位置)执行时获得文件所属组权限
Sticky1t(在 o 位置)只有所有者能删除目录中的文件
# 查看 /tmp 目录权限(有 Sticky Bit)
ls -ld /tmp
# drwxrwxrwt ... /tmp
#         ^
#         t = Sticky Bit

# 设置 SUID
chmod u+s file
chmod 4755 file

# 设置 SGID
chmod g+s file
chmod 2755 file

# 设置 Sticky Bit
chmod +t directory
chmod 1777 directory
🤔 为什么 /tmp 有 Sticky Bit?

/tmp 目录是所有人都可以写的,但有了 Sticky Bit,用户只能删除自己创建的文件,不能删除别人的。这就避免了"互删"的混乱情况。

🔒 实用安全技巧

1. 保护敏感文件

# SSH 私钥
chmod 600 ~/.ssh/id_rsa

# SSH 目录
chmod 700 ~/.ssh

# 配置文件
chmod 600 ~/.config/secret.conf

2. 查找权限过大的文件

# 查找可被所有人写入的文件(危险)
find / -type f -perm -o=w 2>/dev/null

# 查找具有 SUID 的文件
find / -type f -perm -u=s 2>/dev/null

3. 修复常见权限问题

# 修复用户主目录权限
chmod 755 /home/username
chmod 700 /home/username/.ssh

# 修复网站目录权限
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

📝 本章小结

权限速查表

操作命令示例
查看权限ls -lls -l file.txt
修改权限chmodchmod 755 file.sh
修改所有者chownsudo chown user file
修改所属组chgrpsudo chgrp group file

常用权限组合

权限用途
755可执行文件、目录
644普通文件
600私密文件
700私密目录
777所有人可读写执行(通常不推荐)

🔥 核心原则

最小权限原则:只给必要的权限,不多给!

  • 不要动不动就 chmod 777
  • 能不用 sudo 就不用
  • 敏感文件权限设为 600 或 700

🚀 下一步

用户权限搞定了,接下来跟着长安学习传说中的 Vim 编辑器!准备好了吗?

—— 编程指南社区 · 长安

最后更新: 2025/12/1 15:56
Prev
📝 文件操作