gpt4 book ai didi

java - 如何让我的目录为将由我的 Java 程序创建的脚本文件提供可执行权限?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:36 26 4
gpt4 key购买 nike

我希望我的目录向所有将在我运行 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);

除非我授予 script.sh 可执行权限,否则它不会运行。我该怎么做?有什么办法吗?如果我没有按照应该做的方式做某事,请随时提出您的建议。谢谢

最佳答案

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

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

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

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

关于java - 如何让我的目录为将由我的 Java 程序创建的脚本文件提供可执行权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com