Как сохранить права доступа к файлам с Java в разных операционных системах?
В настоящее время я разрабатываю кроссплатформенное приложение (Windows, Mac OS X, Linux) на Java и строю проект на Windows. В процессе сборки я создаю shell-скрипт для Linux, чтобы "обернуть" исполняемый jar-файл.
Я установил исполняемый бит сценария оболочки следующим образом:
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
Кто-нибудь знает, как сохранить х-бит из Windows в Linux?
2 ответа
Ваша программа передачи файлов будет нуждаться в опции сохранения разрешений. Я не думаю, что вы найдете его. Вы можете запустить свою программу в окне Unix, чтобы изменить права доступа к файлу, или вы можете запустить find
команда как
find . -name "*.sh" -exec chmod a+x {} \;
Или вы можете попробовать установить свой umask
,
umask u+x
Или (если вы используете Cygwin), вы можете использовать tar
с
tar cfp file.tar <scripts>
Обратите внимание, что p
это сохранить разрешения.
setExecutable
ничего не делает в Windows, возвращает false, если не получается, вы можете проверить.
Файловые системы Windows не имеют понятия о исполняемом разрешении.
Какие разрешения имеют файлы после передачи в Linux, зависит от программы, которую вы использовали для их передачи, но обычно они равны 600 или 644. Чтобы решить эту проблему, вы должны установить исполняемый бит под Unix-подобной операционной системой на подходящей файловая система.