如何在不同的操作系统中使用Java保留文件权限?

时间:2014-08-20 18:29:27

标签: linux windows file file-permissions preserve

我目前正在使用Java开发跨平台应用程序(Windows,Mac OS X,Linux)并在Windows上构建项目。在构建过程中,我构建了一个用于Linux的shell脚本,以及#34; wrap"可执行的jar文件。

我按如下方式设置shell脚本的可执行位:

File script = new File("run.sh");
script.setExecutable(true);

但是当将run.sh文件传输到Linux时,我总是得到以下权限:

-rw-r--r-- 1 salocinx salocinx 120 2014-08-20 20:21 run.sh

有谁知道如何将x-bit从Windows保存到Linux?

2 个答案:

答案 0 :(得分:2)

您的文件传输程序需要保留权限选项。我不认为你会找到一个。您可以在unix框上运行程序来更改文件权限,也可以运行find命令,如

find . -name "*.sh" -exec chmod a+x {} \;

或者您可以尝试设置umask

umask u+x

或者(如果你正在使用cygwin),你可以使用tar

tar cfp file.tar <scripts>

请注意p是保留权限。

答案 1 :(得分:1)

setExecutable在Windows上没有做任何事情,如果失败则返回false,你可以查看。

Windows文件系统没有可执行权限的概念。

传输到Linux后的权限文件取决于您用于传输它们的程序,但通常它们将是600或644.要解决此问题,您必须在类Unix操作系统下设置可执行位在合适的文件系统上。