Windows 11自带解压工具及PeaZip解压至Samba共享后程序无法执行的问题咨询
Windows 11自带解压工具及PeaZip解压至Samba共享后程序无法执行的问题咨询
我来帮你分析并解决这个问题:
a) 为什么会出现这种差异?
核心原因是Windows自带解压工具/PeaZip与WinRAR在处理Samba共享文件权限时的逻辑不同:
- Windows自带解压工具和PeaZip在向Samba共享目录写入文件时,没有主动设置Linux系统下的执行权限位(x位),导致解压后的可执行文件在Linux主机上的权限是
-rw-r--r--——缺少执行权限,Samba会将这种权限状态同步给Windows,从而触发“无权限访问”的提示。 - 而WinRAR在解压到Samba共享时,会识别出文件的可执行属性,自动为其设置Linux侧的执行权限,最终文件权限为
-rwxr--r--,满足Samba和Windows的执行权限要求,所以程序能正常运行。
b) 如何让Windows自带解压工具或PeaZip实现WinRAR的效果?
这里提供几种可行的解决方案:
- 修改Samba服务器配置(推荐):在Linux主机的
smb.conf配置文件中,找到对应的共享段,添加以下两行配置:
这会让所有写入该共享的文件默认拥有create mask = 0755 directory mask = 0755rwxr--r--权限(所有者可读可写可执行,其他用户可读可执行),之后不管用哪种工具解压,文件都会自动获得执行权限。修改后记得重启Samba服务(比如systemctl restart smbd)生效。 - 先解压到本地再复制:把压缩包先解压到Windows本地磁盘,再将解压后的文件夹复制到Samba共享目录。本地NTFS的权限会被Samba正确映射为Linux侧的执行权限,这样程序就能正常运行。
- 调整PeaZip的解压设置:打开PeaZip的设置面板,查找是否有“保留可执行权限”或“为可执行文件设置执行权限”的选项(不同版本位置可能不同),开启后应该能在解压到Samba共享时自动设置x位。
- 手动补全执行权限:如果已经用自带工具/PeaZip解压完成,可以登录Linux主机,用命令为可执行文件添加执行权限:
# 为单个exe文件添加权限 chmod +x /path/to/your/shared/folder/game.exe # 递归为目录下所有exe文件添加权限 find /path/to/your/shared/folder -name "*.exe" -exec chmod +x {} \;
备注:内容来源于stack exchange,提问作者MikeP
相关产品推荐
相关产品推荐

