字数 1488,阅读大约需 8 分钟
Linux 文件系统结构
树状结构
/
├── bin/ # 基础命令 (ls, cp, mv)
├── boot/ # 启动文件
├── dev/ # 设备文件
├── etc/ # 配置文件
├── home/ # 用户主目录
├── lib/ # 系统库
├── media/ # 可移动媒体
├── mnt/ # 挂载点
├── opt/ # 可选软件
├── proc/ # 进程信息 (虚拟)
├── root/ # root 用户主目录
├── run/ # 运行时数据
├── sbin/ # 系统管理命令
├── srv/ # 服务数据
├── sys/ # 系统信息 (虚拟)
├── tmp/ # 临时文件
├── usr/ # 用户程序
└── var/ # 可变数据 (日志等)
常用目录
| |
|---|
/etc | |
/home | |
/var | |
/usr | |
/proc | |
/dev | |
路径详解
绝对路径 vs 相对路径
# 绝对路径(从根开始)
cd /home/longge/projects
# 相对路径(从当前开始)
cd projects
# 特殊路径
. # 当前目录
.. # 上级目录
~ # 用户主目录
- # 上一个目录
路径操作
pwd # 看当前路径
cd .. # 返回上级
cd ../.. # 返回上上级
cd ~ # 回主目录
cd - # 回上一个目录
路径操作
# 查看当前路径
pwd
# 输出:/home/longge
# 返回上级
cd ..
# 返回上上级
cd ../..
# 返回主目录
cd ~
# 或
cd
# 返回上一个目录
cd -
文件权限详解
权限表示
-rwxr-xr-- 1 longge users 4096 script.sh
││││││││││
│││││││││└─ 其他用户:读
││││││││└── 其他用户:写
│││││││└─── 其他用户:执行
││││││└──── 组用户:读
│││││└───── 组用户:写
││││└────── 组用户:执行
│││└─────── 所有者:读
││└──────── 所有者:写
└────────── 文件类型(-文件,d目录,l链接)
数字表示
常用组合:
rwx = 7
r-x = 5
rw- = 6
r-- = 4
权限数字表示
组合示例:
rwx = 4+2+1 = 7
r-x = 4+0+1 = 5
r-- = 4+0+0 = 4
完整权限:
rwxr-xr-- = 754
rwxrwxrwx = 777
rw-r--r-- = 644
用户与组
用户
whoami # 当前用户
id # 用户信息
cat /etc/passwd # 用户列表
useradd -m newuser # 创建用户
userdel -r newuser # 删除用户
passwd newuser # 改密码
su - username # 切换用户
组
groups # 当前用户组
cat /etc/group # 组列表
groupadd newgroup # 创建组
groupdel newgroup # 删除组
usermod -aG group user # 用户加组
chgrp group file # 改文件所属组
常用命令
查看权限
# 详细列表
ls -l
# 显示隐藏文件
ls -la
# 递归显示
ls -lR
# 显示人类可读大小
ls -lh
修改权限
# 数字方式
chmod 755 script.sh
chmod 644 file.txt
# 符号方式
chmod +x script.sh # 添加执行权限
chmod u+w file.txt # 所有者添加写权限
chmod g-w file.txt # 组移除写权限
chmod o=r file.txt # 其他用户只读
chmod a+x script.sh # 所有人添加执行权限
修改所有者
# 修改文件所有者
sudo chown newuser file.txt
# 修改文件所有者和组
sudo chown newuser:newgroup file.txt
# 递归修改目录
sudo chown -R newuser:newgroup /path/to/dir
实战案例
案例 1:部署 Web 应用
# 1. 创建应用目录
sudo mkdir -p /var/www/myapp
# 2. 创建应用用户
sudo useradd -r -s /bin/false myapp
# 3. 设置目录权限
sudo chown -R myapp:myapp /var/www/myapp
sudo chmod -R 755 /var/www/myapp
# 4. 配置文件只读
sudo chmod 644 /var/www/myapp/config.ini
# 5. 日志目录可写
sudo chmod 777 /var/www/myapp/logs (只是举例,生产环境慎用)
案例 2:共享目录设置
# 1. 创建共享目录
sudo mkdir /shared
# 2. 创建共享组
sudo groupadd shared
# 3. 添加用户到组
sudo usermod -aG shared user1
sudo usermod -aG shared user2
# 4. 设置目录权限
sudo chown root:shared /shared
sudo chmod 775 /shared
# 5. 设置 SGID(新文件继承组)
sudo chmod g+s /shared
案例 3:安全脚本
# 1. 创建脚本
cat > backup.sh << 'EOF'
#!/bin/bash
# 备份脚本
tar -czf /backup/$(date +%F).tar.gz /data
EOF
# 2. 设置权限(只有所有者可执行)
chmod 700 backup.sh
# 3. 设置所有者
sudo chown root:root backup.sh
# 4. 测试执行
./backup.sh
避坑指南
坑 1:chmod 777
# ❌ 别这样
chmod 777 /var/www
# ✅ 正确
chmod 755 /var/www
chmod 644 /var/www/config.php
坑 2:改根目录
# ❌ 别这样,系统会挂
chmod -R 777 /
# ✅ 正确
chmod -R 755 /var/www
坑 3:共享目录没设 SGID
# ❌ 新文件不属于共享组
mkdir /shared
# ✅ 加 SGID
chmod g+s /shared
坑 4:脚本没执行权限
# ❌ 报错 Permission denied
./script.sh
# ✅ 加权限
chmod +x script.sh
./script.sh
练习题
基础题
- 2. 将
test.txt 设置为只有所有者可读写
进阶题
答案
# 1
ls -l /etc/passwd
# 2
chmod 600 test.txt
# 3
chmod +x script.sh
# 4
sudo groupadd team
sudo mkdir /team
sudo chown root:team /team
sudo chmod 774 /team
sudo chmod g+s /team
# 5
sudo useradd -r -s /bin/false www
sudo mkdir -p /var/www/app/{code,config,logs}
sudo chown -R www:www /var/www/app
sudo chmod 755 /var/www/app/code
sudo chmod 644 /var/www/app/config/*
sudo chmod 777 /var/www/app/logs
📊 权限速查表
| |
|---|
| chmod +x script.sh |
| chmod 444 file.txt |
| chmod 600 file.txt |
| chmod 644 file.txt |
| chmod 755 /dir |
| chmod 700 /dir |
| chmod 775 /dir |
| chmod 1777 /tmp |
💬 下篇预告
《Linux 用户与组管理实战》
内容包括: