为什么文件从 Linux 传输到 Windows 时会失去 Windows 上的执行权限,反之亦然?
答案1
Linux 和 Windows 中的文件处理方式非常不同。 Windows 不知道Linux 文件权限的可执行位。当文件从 Linux 传输到 Windows 时,该信息(包括其他权限)将会丢失,反之亦然。
最有可能的是 Windows 端的 scp 客户端以“Windows 方式”设置复制文件的权限。该客户端作为特定用户运行,该用户就是新文件的所有者。反之亦然; Linux端的scp客户端以运行用户创建新文件,原有权限丢失。
答案2
有没有明确的Unix 和 Windows 权限之间是一一对应的,尽管它们是类似的。 Cygwin 和 MinGW 利用这个类比在 Windows 文件系统上模仿 Unix 权限。
WinSCP可以已编写为在复制到 Windows 时使用此类类比,但它在创建文件时依赖于继承的文件夹权限,而不是调整它们以模仿 Unix 文件权限。这就是你“丢失”信息的地方。回到Unix,它是可配置的:
进一步阅读:
答案3
事实并非如此。我试了几次,执行权限没有丢失。但对于你的情况,你可以尝试: chmod 777
在linux下尝试使用root权限进行上述操作,然后尝试转移它。
答案4
在 Linux 中,右键单击可执行文件,然后单击“权限”。
勾选复选框允许执行文件。
并尝试执行该文件。