青春

永远年轻,永远热泪盈眶。

Linux文件权限详解

- 发布于 技术 来自

Linux文件权限详解

权限的基本概念

在Linux系统中,每个文件和目录都有三组权限:
所有者权限组权限其他用户权限

每组权限包含三种操作:
读(r)写(w)执行(x)

权限的表示方法

1. 符号表示法

-rwxr-xr--

分解: - 第一个字符:文件类型(-普通文件,d目录) - 第2-4字符:所有者权限(rwx) - 第5-7字符:组权限(r-x) - 第8-10字符:其他用户权限(r--

2. 数字表示法(八进制)

  • r(读) = 4
  • w(写) = 2
  • x(执行) = 1

示例: - rwxr-xr-- = 754 - 所有者:4+2+1 = 7 - 组:4+0+1 = 5 - 其他:4+0+0 = 4

常用权限组合

文件权限:

  • 644:所有者可读写,其他人只读(常见于网页文件)
  • 755:所有者可读写执行,其他人可读执行(常见于脚本)
  • 600:仅所有者可读写(敏感文件)

目录权限:

  • 755:标准目录权限
  • 700:私有目录
  • 777:完全开放(危险!)

权限修改命令

1. chmod - 修改权限

# 符号表示法
chmod u+x file.txt      # 给所有者添加执行权限
chmod g-w file.txt      # 移除组的写权限
chmod o=r file.txt      # 设置其他用户为只读

# 数字表示法
chmod 644 file.txt      # 设置为rw-r--r--
chmod 755 script.sh     # 设置为rwxr-xr-x

2. chown - 修改所有者

chown user file.txt          # 修改文件所有者
chown user:group file.txt    # 同时修改所有者和组
chown -R user directory/     # 递归修改目录下所有文件

3. chgrp - 修改组

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

特殊权限

1. SetUID(4)

  • 文件执行时以文件所有者身份运行
  • 数字表示:在三位数前加4
  • 示例:chmod 4755 /usr/bin/passwd

2. SetGID(2)

  • 文件执行时以文件所属组身份运行
  • 目录中新建文件继承目录的组
  • 数字表示:在三位数前加2

3. Sticky Bit(1)

  • 仅目录有效,防止用户删除他人文件
  • 常见于/tmp目录
  • 数字表示:在三位数前加1

实际应用场景

1. 网页服务器

# 网页文件:所有者可读写,其他人只读
chmod 644 index.html style.css

# 目录:所有者可读写执行,其他人可读执行
chmod 755 public_html/

# CGI脚本:需要执行权限
chmod 755 cgi-bin/script.cgi

2. 脚本文件

# 给脚本添加执行权限
chmod +x backup.sh
chmod 755 deploy.sh

3. 配置文件(敏感信息)

# 仅所有者可读写
chmod 600 .env config.json
chmod 700 ~/.ssh/

4. 共享目录

# 团队共享目录
chmod 775 shared/
chown :team shared/

权限查看命令

1. ls -l

ls -l file.txt
# 输出:-rw-r--r-- 1 user group 1024 Apr 16 10:00 file.txt

2. stat

stat file.txt
# 显示详细权限信息(八进制和符号)

3. getfacl(查看ACL)

getfacl file.txt
# 显示访问控制列表(更细粒度的权限)

权限问题排查

常见错误:

  1. 权限不足Permission denied
  2. 不是可执行文件bash: ./script: Permission denied
  3. 目录不可读:无法列出目录内容
  4. 目录不可写:无法创建或删除文件

排查步骤:

# 1. 查看当前权限
ls -l file.txt

# 2. 查看当前用户和组
id
whoami

# 3. 检查文件所有者和组
ls -n file.txt  # 显示数字ID

# 4. 尝试修改权限
sudo chmod 755 file.txt  # 需要时使用sudo

最佳实践

  1. 最小权限原则:只授予必要的权限
  2. 定期审计:检查重要文件的权限设置
  3. 使用组管理:通过组控制访问权限
  4. 避免777:尽量不要使用完全开放权限
  5. 理解后再修改:不确定时先查看现有权限

总结

Linux文件权限是系统安全的基础。
正确理解和设置权限可以:
- 保护敏感数据
- 控制用户访问
- 防止误操作
- 维护系统安全

掌握权限管理,是成为合格Linux管理员的第一步。