java - 当 bash 脚本通过 Java 代码运行时,如何在 Linux 中将用户设置为 root

标签 java linux bash permissions

假设我的 bash 文件包含

chmod -R 777 $backup_files/app/webroot/uploadedFiles/

当我使用 /permission.sh 通过 root 权限运行它时它工作正常但是当我尝试通过像

这样的 java 代码运行这个 bash 脚本时
        Runtime runtime = Runtime.getRuntime();
        Process process = runtime.exec("/permission.sh");
        printBufferedReaderOutputFromProcess(process);
        process.waitFor();

它给了我以下错误:

chmod: changing permissions of `/home/app/webroot/uploadedFiles/A.jpg': Operation not permitted 

我能解决什么问题?

最佳答案

我怀疑您之前没有使用过 sudo,但是在脚本上使用 setuid 的替代方法是授予用户以 root 身份对脚本执行 sudo 的权限。即

sudo permisions.sh

这可以作为 root 运行而无需输入密码。你必须在 sudoers.conf 中设置它

关于java - 当 bash 脚本通过 Java 代码运行时,如何在 Linux 中将用户设置为 root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514672/

相关文章:

64 位系统上的 Java native 接口(interface) 32 位 dll

linux - 使用 sed 替换多个单词

linux - 如何删除多个相同扩展名的文件但保留最新的

linux - 无法获得这个简单的 sed 命令

bash - 在 Bash 中,每一段 "${BASH_SOURCE:-${(%):-%x}}"的含义是什么

java - 表示两个以上 float 数组的最快方法是什么?

java - 使用 JPA 持久化父对象时如何防止保存子对象?报告 TransientPropertyValueException

java - 只读数据的 Spring Boot 存储库 : @Query annotation type not applicable to this kind of declaration

mysql - 如何在 bash 脚本中授予 MySQL 权限?

linux - 为什么这个 bash 脚本获取 http header