万字详解|Linux文件权限与用户管理完全指南
📖 为什么要关注权限?(安全第一!)
文件权限就像家门钥匙,控制着"谁能做什么"。Linux通过权限实现:
- 防止员工误删公司关键文件(2017年GitLab误删数据库事件)
- 阻止恶意脚本擅自执行(勒索软件防护)
- 保证多用户协同工作的秩序(开发团队协作场景)
👥 用户身份三层体系(UGO模型)
用户身份 │ 实际对应
──────────┼─────────────
user(主人) │ 文件创建者
group(家人)│ 预先设置的用户组
others(路人)│ 其他所有用户
📌 示例:研发部的Java项目文件
- 创建者:程序员小明(用户)
- 所属组:java-team组(5人)
- 其他人:公司其他部门
🔐 权限类型深度解析
文件权限说明表
权限字符 │ 对文件的影响 │ 对目录的影响[重点!]
────────┼─────────────────────┼───────────────────────
r │ 读取文件内容 │ 查看目录内文件列表
w │ 修改/清空文件内容 │ 创建/删除目录内文件
x │ 作为程序执行 │ 进入目录的通行证
实际场景演示
# 创建测试文件
touch test.txt && mkdir demo_dir
# 设置文件可执行权限
chmod +x install.sh => 允许./install.sh执行
# 目录无x权限时:
cd demo_dir => "权限被拒绝"
🔢 两种权限表示法对照表
符号表示 │ 数字 │ 权限范围
────────┼─────┼─────────────
rwx │ 7 │ 用户权限
r-x │ 5 │ 组权限
--x │ 1 │ 其他人权限
换算公式:r(4)+w(2)+x(1)=总和
常见组合:
- 755:用户全权,其他人可读可执行(适合程序文件)
- 644:用户可写,其他人只读(配置文件典型设置)
🛠️ 实用命令大全
1. 修改权限(chmod)
# 符号模式(推荐新手)
chmod u+rx file # 给主人添加读执行
chmod g-w,o= file # 移除组写权限,清空其他人权限
# 数字模式(服务器常用)
chmod 750 backup.sh
2. 变更所有者(chown)
# 修改文件主人为mysql用户
sudo chown mysql /var/lib/mysql
# 递归修改目录及内容所属
sudo chown -R devops:deploy /opt/apps
3. 权限屏蔽(umask)
当前会话默认权限:
umask 0022 # 新建文件权限:644,目录:755
临时修改:
umask 0007 # 其他人无权限
⚠️ 高阶权限特性
1. 特权通行证(SUID)
chmod u+s /usr/bin/passwd
# 普通用户修改密码时临时获得root权限
2. 继承魔棒(SGID)
chmod g+s /shared_project
# 此目录下新建文件自动继承组权限
3. 防删卫士(Sticky Bit)
chmod +t /tmp
# 只有文件主人或root能删除/tmp中的文件
🚨 常见问题应急方案
❶ 无法保存文档?
# 检查写权限
ls -l report.doc => 查看是否有w标志
# 解决方案:
sudo chmod +w report.doc
❷ 脚本无法运行?
# 添加执行权
chmod +x auto_backup.sh
❸ 组权限不生效?
# 确认用户是否在目标组
groups 用户名
# 添加用户到指定组
sudo usermod -aG developers alice
🔒 安全警戒线
- 切忌随意设置
chmod 777
——等于把银行卡密码设为123456 - 定期使用
find / -perm -4000
检查异常SUID文件 - 敏感配置文件建议权限 600(仅用户可读写)
🚀 进阶学习路线
- 了解ACL(访问控制列表):
getfacl
/setfacl
- 学习用户组策略:
gpasswd
命令详解 - 掌握SELinux上下文管理
现在试着创建一个测试用户,在/home目录建立实验文件夹,体会不同权限设置带来的效果变化吧!遇到具体问题欢迎随时提问交流,动手实践是最好的老师!