软件吧
登录注册账号
/posts/acl-3
电脑必备

日志包解压后ACL全丢,我拿三台机器对账,发现是解压时的权限选项没勾

码农小张 82 0 13

上周处理一个线上故障,运维把日志包从跳板机拷下来,我解压后直接用 grep 搜关键字,结果提示一堆 Permission denied。一开始以为是压缩包本身有问题,后来 ls -l 一看,所有文件权限全是 644,原本的 640 和 600 全没了。

排查过程

我找了三个环境做对比:

  • 本机 Win10 21H2,用 Win解压缩 5.9.2 右键解压
  • 本机同版本,用 7-Zip 22.01 命令行 7z x -p*** logs.zip
  • 测试服务器 CentOS 7.9,用 unzip 6.0 解压

结果:Win解压缩解出来的文件权限全被重写为当前用户默认权限,7-Zip 和 unzip 都保留了原始 ACL 和权限位。

关键发现

Win解压缩的图形界面里其实有个「保留文件权限」的选项,但默认没勾。我翻了它的帮助文档,发现这个选项只在专业版里有效,免费版直接置灰。换句话说,普通用户拿它解压带权限的包,权限必然丢失。

我的判断

  • 如果只是自己看日志,权限丢了无所谓
  • 但如果是部署包,解压后需要按原权限跑服务,那必须用 7-Zip 命令行或者服务器端 unzip
  • Win解压缩的优势在速度,我实测一个 2.3G 的日志包,它比 7-Zip 快约 40%,但代价就是权限和符号链接这些元数据不管

给同行的建议

  1. 部署包一律走命令行工具,别用图形界面解压
  2. 如果非要用 Win解压缩,解压后手动跑一遍 chmod 恢复权限
  3. 打包时把权限清单一起打进去,解压后对账

你们平时解压部署包会检查权限吗?还是直接跑起来再说?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。