Linux File Permission Modes 0700 vs 0755

Linux File Permission Modes 0700 vs 0755 #

https://claude.ai/chat/0da5549d-c54b-4337-ac58-e943e43d623d

目录 #

  1. Linux基础权限详解
  2. 不恰当权限的安全问题
  3. 压缩文件解压的安全风险
  4. 权限防护机制
  5. 最佳安全实践

Linux基础权限详解 #

权限位含义 #

  • 4 = 读权限 (r, read)
  • 2 = 写权限 (w, write)
  • 1 = 执行权限 (x, execute)

常用权限组合 #

文件权限 #

  • 0644 - 所有者读写,组和其他用户只读(常用于普通文件)
  • 0600 - 所有者读写,其他用户无权限(私密文件)
  • 0755 - 所有者全权限,其他用户读和执行(可执行文件)
  • 0700 - 所有者全权限,其他用户无权限(私密可执行文件)
  • 0777 - 所有用户全权限(极不推荐,安全风险)

目录权限 #

  • 0755 - 所有者全权限,其他用户可进入和查看
  • 0750 - 所有者全权限,组用户可进入查看,其他用户无权限
  • 0700 - 只有所有者可访问
  • 0775 - 所有者和组全权限,其他用户读和执行

特殊权限位 #

  • 1xxx - 粘滞位 (sticky bit)
  • 2xxx - SGID
  • 4xxx - SUID
  • 6xxx - SUID + SGID

0700 vs 0755 的区别 #

  • 0700:仅限所有者访问,完全私密
  • 0755:所有者可写,其他人只读,适合公共访问的可执行文件

不恰当权限的安全问题 #

真实安全事件 #

1. CVE-2021-4034 (PwnKit) #

  • 影响:polkit pkexec中的SUID权限漏洞
  • 后果:任何非特权用户可获得完整root权限
  • 教训:SUID程序需要特别谨慎的权限管理

2. CVE-2023-0386 (正在被积极利用) #

  • 问题:Linux内核OverlayFS权限管理漏洞
  • 影响:本地权限提升攻击
  • 状态:CISA警告正在被主动利用

3. SSH密钥权限配置错误 #

  • 常见错误:将私钥权限设为644而非600
  • 后果:私钥可被同服务器其他用户读取
  • 防护:SSH会拒绝使用权限过于开放的私钥

777权限的危害 #

根据真实用户报告:

  • 网站被挂马:攻击者上传文件到777权限目录,运行钓鱼网站
  • 系统功能破坏:某些应用检查权限级别,777权限会导致拒绝运行
  • 恶意代码植入:在共享主机环境中,其他用户可修改777权限的文件

压缩文件解压的安全风险 #

Zip Slip攻击原理 #

什么是Zip Slip #

一种目录穿越攻击,通过在压缩文件中使用特殊路径(如../../evil.sh)来将文件解压到目标目录之外。

攻击流程示例 #

正常期望:
解压到 → C:\用户\下载\文件夹\
├── 照片1.jpg
├── 照片2.jpg
└── 说明.txt

恶意实际:
├── 照片1.jpg                           ← 正常文件
├── ../../Windows/system32/病毒.exe      ← 跳到系统目录
└── ../../../../Desktop/木马.bat         ← 跳到桌面

路径计算过程 #

基础路径:C:\用户\下载\文件夹\
恶意路径:../../Windows/system32/病毒.exe

计算过程:
1. C:\用户\下载\文件夹\ 
2. ../ → C:\用户\下载\      (上一级)
3. ../ → C:\用户\           (再上一级) 
4. Windows → C:\Windows\    (进入系统目录)
5. system32 → C:\Windows\system32\
6. 最终:C:\Windows\system32\病毒.exe

真实攻击案例:WinRAR CVE-2023-38831 #

攻击规模 #

  • 发现时间:2023年4月
  • 影响范围:WinRAR 6.23版本之前的所有版本(超过5亿用户)
  • 攻击目标:主要针对金融交易员

攻击手法 #

  1. 伪装文件:创建看似正常的图片或PDF文件
  2. 恶意结构
    恶意.rar
    ├── 诱饵.jpg          ← 用户看到的正常文件
    └── 诱饵.jpg /        ← 同名文件夹,包含恶意代码
        └── 诱饵.jpg.exe  ← 真正的恶意程序
    
  3. 触发机制:用户双击图片时,实际执行恶意程序

实际损失 #

  • 受害者:130多名交易员设备被感染
  • 经济损失:交易账户资金被盗(具体金额未公开)
  • 传播渠道:专业交易论坛
  • 恶意软件:DarkMe、GuLoader、Remcos RAT等多种木马

攻击者类型 #

  • APT组织:DarkMe、UAC-0057、APT40、Konni、SandWorm
  • 政府背景:Google TAG观察到多国政府支持的黑客组织利用此漏洞

其他受影响的项目 #

大型项目中发现的Zip Slip漏洞:

  • Oracle、Amazon、Spring/Pivotal
  • LinkedIn、Twitter、Alibaba
  • Jenkins、Eclipse
  • 数千个开源项目

权限防护机制 #

权限如何防护Zip Slip攻击 #

1. 访问权限限制 #

bash

# 攻击目标:/etc/passwd(系统密码文件)
# 文件权限:644(只有root能写)

普通用户解压:
解压软件:我要覆盖 /etc/passwd
操作系统:❌ 拒绝!这个文件只有root能修改
结果:攻击失败,显示"权限不足"错误

2. 不同权限下的解压效果对比 #

权限类型可成功攻击的目标被阻止的攻击风险等级
普通用户用户配置文件、/tmp目录系统文件、其他用户文件😟 中等
Root用户所有文件、整个系统💀 极高
受限用户几乎无大部分攻击😌 低
沙盒环境所有攻击✅ 最低

3. 普通用户权限解压示例 #

假设恶意压缩包包含:

  • ../../etc/passwd → ❌ 权限不足,解压失败
  • ../../root/.ssh/authorized_keys → ❌ 无法访问root目录
  • ../../../tmp/evil.sh → ✅ 成功,/tmp目录可写
  • ../../../../home/user/.bashrc → ✅ 成功,用户自己的文件

4. Root权限解压(最危险) #

  • ✅ 所有恶意文件都成功解压
  • 💀 系统密码文件被覆盖
  • 💀 SSH后门被植入
  • 💀 系统完全被攻陷

权限防护的局限性 #

即使有权限保护,仍存在风险:

  1. 用户目录内攻击
    • 覆盖 .bashrc.ssh/authorized_keys 等配置文件
    • 在启动目录植入自启动程序
  2. 社会工程学攻击
    • 诱导用户使用sudo权限解压
    • 利用用户对"修复权限问题"的误解

最佳安全实践 #

1. 解压文件的安全权限设置 #

推荐方式:专用受限用户 #

bash

# 创建专门的解压用户
sudo useradd -r -s /bin/false extract_user  # 系统用户,不能登录
sudo mkdir /var/extract_jail
sudo chown extract_user:extract_user /var/extract_jail
sudo chmod 750 /var/extract_jail

# 安全解压
sudo -u extract_user unzip suspicious.zip -d /var/extract_jail/

# 检查后再使用
sudo ls -la /var/extract_jail/

沙盒环境解压(最安全) #

bash

# 使用Docker容器
docker run --rm -it \
  -v $(pwd)/file.zip:/tmp/file.zip \
  -v $(pwd)/output:/tmp/output \
  --user 1000:1000 \
  ubuntu:latest \
  unzip /tmp/file.zip -d /tmp/output

# 使用firejail
firejail --private=/tmp/sandbox --noroot unzip malicious.zip

2. 文件权限最佳实践 #

通用权限设置 #

bash

# 目录权限
find /path -type d -exec chmod 755 {} \;

# 文件权限  
find /path -type f -exec chmod 644 {} \;

# 可执行文件
chmod 755 /path/to/executable

# 私密文件
chmod 600 /path/to/private/file

SSH相关权限 #

bash

chmod 700 ~/.ssh/              # SSH目录
chmod 600 ~/.ssh/id_rsa        # 私钥
chmod 644 ~/.ssh/id_rsa.pub    # 公钥
chmod 600 ~/.ssh/authorized_keys  # 授权密钥
chmod 644 ~/.ssh/known_hosts   # 已知主机

3. 代码层面的防护 #

安全的解压实现(Java) #

java

public static File newFile(File targetPath, ZipEntry zipEntry) throws IOException {
    String name = zipEntry.getName();
    File f = new File(targetPath, name);
    String canonicalPath = f.getCanonicalPath();
    
    // 关键检查:确保文件在目标目录内
    if (!canonicalPath.startsWith(targetPath.getCanonicalPath() + File.separator)) {
        throw new ZipException("危险路径,拒绝解压: " + name);
    }
    
    return f;
}

安全的解压实现(Python) #

python

import zipfile
import os

def safe_extract(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        for member in zip_ref.namelist():
            # 路径规范化检查
            if not is_safe_path(extract_to, member):
                raise Exception(f"检测到危险路径: {member}")
            zip_ref.extract(member, extract_to)

def is_safe_path(base_path, path):
    abs_base_path = os.path.abspath(base_path)
    abs_path = os.path.abspath(os.path.join(base_path, path))
    return abs_path.startswith(abs_base_path)

4. 系统级防护措施 #

多层防护策略 #

1. 权限控制
   ├── 最小权限原则
   ├── 目录权限限制
   └── 进程权限隔离

2. 路径验证
   ├── 检查文件路径合法性
   └── 拒绝危险的路径穿越

3. 沙盒环境
   ├── 容器化处理
   └── 虚拟机隔离

4. 实时监控
   ├── 文件系统监控(如auditd)
   └── 异常行为检测

监控和审计 #

bash

# 查找异常权限文件
find / -perm -4000 2>/dev/null  # SUID文件
find / -perm -2000 2>/dev/null  # SGID文件  
find / -perm -777 2>/dev/null   # 777权限文件

# 启用系统审计
sudo systemctl enable auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes

5. 用户教育要点 #

永远不要做的事 #

  • ❌ 永远不要用root权限解压未知文件
  • ❌ 不要随意设置777权限"解决问题"
  • ❌ 不要解压来路不明的压缩文件

安全习惯 #

  • ✅ 使用最新版本的解压软件
  • ✅ 在隔离环境中处理可疑文件
  • ✅ 定期检查和审计文件权限
  • ✅ 及时安装安全更新

总结 #

关键要点 #

  1. 权限是第一道防线
    • 合理的权限设置可以阻止大部分攻击
    • 但不是万能的,需要配合其他安全措施
  2. Zip Slip是真实且普遍的威胁
    • 已造成实际经济损失和系统入侵
    • 影响范围广泛,从个人用户到大型企业
  3. 多层防护的重要性
    • 单一防护措施容易被绕过
    • 权限控制 + 路径验证 + 沙盒环境 + 实时监控
  4. 最小权限原则
    • 给予完成任务所需的最小权限
    • 定期审计和清理不必要的权限

最终建议 #

安全不是一蹴而就的,而是一个持续的过程。在处理压缩文件和设置权限时,始终保持谨慎态度,遵循最佳实践,并保持对新威胁的警觉。

记住:宁可稍微麻烦一些,也不要为了方便而牺牲安全。一次安全事故的损失,远远超过平时谨慎操作的成本。