如何将执行权限分配给在Linux中执行的.sh文件

这是我的问题,

Windows中,我正在制作一个zip文件,其中有一个文本.sh文件,应该在Linux中执行。 另一端的用户在Linux中打开zip文件并尝试执行.sh文件,但执行权限不见了。 所以用户必须手动完成(像这里解释的那样: 添加执行权限 。

我怎么能在Windows中使.sh可执行文件并将其添加到一个zip文件,以便当在Linux中打开zip文件.sh文件仍然保留其执行权限(以便用户不必手动执行)

Solutions Collecting From Web of "如何将执行权限分配给在Linux中执行的.sh文件"

据我所知,Linux中的权限系统是以这种方式设置的,以防止你正在努力完成的任务。

我认为你能做的最好的事情就是给你的Linux用户一个自定义的解压缩单线程来运行提示符:

unzip zip_name.zip && chmod +x script_name.sh 

如果有多个脚本需要授予执行权限, grant_perms.sh按如下所示编写grant_perms.sh

 #!/bin/bash # file: grant_perms.sh chmod +x script_1.sh chmod +x script_2.sh ... chmod +x script_n.sh 

(你可以把脚本全部放在chmod的一行上,但是我发现单独的行在vim和shell脚本命令中更容易使用。)

现在你的解压缩单行变成:

 unzip zip_name.zip && source grant_perms.sh 

请注意,由于您正在使用source运行grant_perms.sh ,它不需要执行权限

ZIP文件格式允许存储权限位,但Windows程序通常会忽略它。 Cygwin上的zip实用程序确实保留了x位,就像它在Linux上一样。 如果你不想使用Cygwin,你可以拿一个源代码并调整它,以便所有的* .sh文件得到可执行的位设置。 或者写一个像这里解释的脚本

这可以使用Info-Zip开源Zip工具。 如果使用-X参数运行解压缩 ,它将尝试保留原始权限。 如果源文件系统是NTFS,而目标是Unix系统,它将尝试从一个转换到另一个。 我目前没有可用的Windows系统来测试翻译,所以您将不得不尝试哪些组需要授予执行权限。 这将是像“用户”或“任何用户”

这不可能。 Linux权限和Windows权限不转换。 他们是机器特定的。 这将是一个安全漏洞,允许在文件到达目标系统之前对文件进行权限设置。