有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

linux我如何使我的目录为我的Java程序将要创建的脚本文件授予可执行权限?

我希望我的目录为运行Java程序后将在该目录中创建的所有shell脚本授予可执行权限(默认情况下)。我尝试了以下命令:

setfacl -d -m group:name:rwx /path/to/your/dir

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

第一个没有显示任何响应,而第二个工作正常,但我必须在Java程序创建所有脚本后在终端中手动执行此命令。这不是我想要的。我希望这东西是自动的。以下是我努力实现的目标:

我的Java程序创建了。sh文件在一个目录中。 现在程序将尝试执行此脚本文件

下面是一个Java代码片段,它显示了如何执行脚本文件:

    ExecuteShellComand obj = new ExecuteShellComand();        
    String command2 = "./script.sh";
    String output2 = obj.executeCommand(command2);

除非我给脚本可执行权限,否则它不会运行。我该怎么做?有什么办法吗?如果我没有以应该做的方式做某事,请随时提出建议。谢谢


共 (1) 个答案

  1. # 1 楼答案

    默认ACL权限由openmkdir系统调用中指定的文件创建模式屏蔽

    由于文件通常使用默认模式0666创建,因此执行权限将被屏蔽而不是继承

    创建文件的程序负责创建具有正确权限的文件。如果在创建脚本时正确设置了权限,则根本不需要ACL或chmod。解决此问题的最佳方法是,您的程序将open调用中的模式设置为0777

    Java似乎对此有Files.createFile。此外,您还有一个更模糊的File.setExecutable在事后执行,这不是Unix规范行为,但可能适合您的用例