如何使用Linux Tar-Xp解压时保留文件原始权限和属主,避免应用错误?
- 内容介绍
- 文章标签
- 相关推荐
本文共计797个文字,预计阅读时间需要4分钟。
使用 tar -xp 命令进行解压缩。
只保留基础权限和属主(最常见需求)
多数服务启动失败是因为可执行位丢失、目录无 x 权限、或程序被解压成普通用户所有而无法访问 root-only 资源。这时必须:
-
加
-p:还原读写执行权限、sticky/setuid/setgid 位、时间戳 -
用 root 用户解压:否则
--same-owner不生效,属主会强制降级为当前用户(静默失败,不报错) -
避免用
-C切换到非空目录:防止覆盖已有配置文件或触发权限冲突
正确命令示例:
sudo tar -xpf app.tar.gz -C /opt/myapp
注意:不用 --same-owner 也能生效——因为 -p 在 root 下默认启用 --same-owner 行为;普通用户加了也白加。
需要还原 ACL、扩展属性或 capabilities
像数据库二进制、安全工具、容器运行时等,常依赖 ACL(如 getfacl)、chattr 标志(如 i 不可删)、或 getcap 设置的 capability(如 cap_net_raw)。这些 -p 完全不管。
本文共计797个文字,预计阅读时间需要4分钟。
使用 tar -xp 命令进行解压缩。
只保留基础权限和属主(最常见需求)
多数服务启动失败是因为可执行位丢失、目录无 x 权限、或程序被解压成普通用户所有而无法访问 root-only 资源。这时必须:
-
加
-p:还原读写执行权限、sticky/setuid/setgid 位、时间戳 -
用 root 用户解压:否则
--same-owner不生效,属主会强制降级为当前用户(静默失败,不报错) -
避免用
-C切换到非空目录:防止覆盖已有配置文件或触发权限冲突
正确命令示例:
sudo tar -xpf app.tar.gz -C /opt/myapp
注意:不用 --same-owner 也能生效——因为 -p 在 root 下默认启用 --same-owner 行为;普通用户加了也白加。
需要还原 ACL、扩展属性或 capabilities
像数据库二进制、安全工具、容器运行时等,常依赖 ACL(如 getfacl)、chattr 标志(如 i 不可删)、或 getcap 设置的 capability(如 cap_net_raw)。这些 -p 完全不管。

