电脑必备
部署包解压后权限全乱,我换了条命令才搞明白谁在捣鬼
25 0 13
上周发版差点翻车,记录一下。
场景:线上服务发版,部署包(tar.gz,约 2.3G)在本地用 Win解压缩 解压后,再 scp 到服务器。结果服务起不来,报 Permission denied。
排查过程:
- 先看文件权限,
ls -l发现所有文件权限都变成了-rw-r--r--,可执行位全没了。 - 用
tar -tvf看原始包里的权限,-rwxr-xr-x,确认包没问题。 - 那就是解压工具的问题。我分别用 Win解压缩(版本 5.0.2)和 7-Zip(版本 22.01)在本地解压同一份包,然后对比权限:
- Win解压缩:权限统一为 644,无执行位。
- 7-Zip:保留原始权限,执行位正常。
- 又试了命令行
7z x和tar -zxvf(WSL 里),结果都正常。
结论:Win解压缩的图形界面解压 tar.gz 时,默认不保留 Unix 权限位,只当普通文件处理。这对普通用户没影响,但我这种天天跟部署包打交道的,直接踩坑。
我的做法:
- 日常发版,本地解压一律用
tar -zxvf或7z x,不碰图形界面。 - 如果非要用 Win解压缩,解压后手动
chmod +x一下可执行文件,或者干脆解压完重新打 tar 包时加-p参数。 - 顺便测了下解压速度:同一份 2.3G 包,Win解压缩 48 秒,7-Zip 55 秒,Win解压缩确实快一点,但省下的 7 秒不够我修权限的。
一点补充:Win解压缩的右键菜单里有个「以管理员身份运行」,对权限问题没帮助,别被误导。另外,它处理 zip 包时权限倒是正常,问题只出在 tar.gz 上。
最后问一句:你们发版时,本地解压部署包是用图形工具还是直接命令行?有没有遇到过类似权限丢失的情况,后来怎么绕过去的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
