tar 默认不保留文件权限,需加 -p 选项才能保存属主、属组、权限等元数据;root 提取可完整还原,普通用户提取时属主/属组映射为当前用户,但 rwx 等权限仍保留;验证用 tar -tvf 查看 root/root 和权限字符串;如需绝对路径需加 -p(有风险)。

用 tar 打包时默认不保留文件的原始权限(比如属主、属组、读写执行位等),尤其在非 root 用户下打包后,提取时容易变成当前用户所有、权限被重置。要真正保持原有权限,关键在于使用 -p(或 --preserve-permissions)选项。
打包时加 -p 选项
该选项告诉 tar 在归档过程中记录并保存每个文件的权限、属主、属组、时间戳等元数据。不加它,即使 root 打包,提取时也可能丢失部分属性。
- 普通打包(不压缩)并保留权限:
tar -cpvf backup.tar /path/to/dir - 打包 + gzip 压缩 + 保留权限:
tar -czpvf backup.tar.gz /path/to/dir - 打包 + bzip2 压缩 + 保留权限:
tar -cjpvf backup.tar.bz2 /path/to/dir
注意权限与用户 ID 的实际限制
-p 能保存权限信息,但能否在提取时完整还原,取决于运行提取命令的用户身份:
- 如果是 root 提取,所有权限、属主/属组都会按归档中记录的精确还原;
- 如果是普通用户提取,属主/属组会自动映射为当前用户(因为无权设其他用户 ID),但文件自身的 rwx 权限、粘滞位、setuid/setgid 等仍会被保留;
- 若归档中包含 root 拥有的配置文件(如
/etc/nginx/conf.d/),建议始终由 root 打包和提取,才能完全保真。
验证权限是否被正确记录
打包完成后,可用 tar -tvf 查看详细列表,观察输出中是否显示完整的权限字符串(如 drwxr-xr-x root/root):
drwxr-xr-x root/root 0 2026-07-28 15:20 etc/-rw-r--r-- root/root 1234 2026-07-28 15:20 etc/hosts如果看到类似 root/root 和完整权限位,说明 -p 已生效。
补充:避免路径问题影响权限还原
tar 默认会剥离绝对路径前的 /(即转为相对路径存储),这是安全机制,但也意味着提取时不会覆盖系统根目录下的同名文件。若你确实需要保留绝对路径(例如做系统级备份),可加 -P(大写 P)选项:
tar -cPpvf system-backup.tar /etc /var/log- ⚠️ 注意:-P 有风险,提取时可能覆盖关键系统文件,仅限可信环境且明确目的时使用。











