如何在此代码中以。root文件的形式运行? 在主要部分我从欲望目录运行我的.sh文件。但是当我跑步时,我得到了许可。我希望我的.sh代码以root身份运行。有什么办法吗?
import java.io.IOException;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteException;
public class TestScript {
int iExitValue;
String sCommandString;
public void runScript(String command){
sCommandString = command;
CommandLine oCmdLine = CommandLine.parse(sCommandString);
DefaultExecutor oDefaultExecutor = new DefaultExecutor();
oDefaultExecutor.setExitValue(0);
try {
iExitValue = oDefaultExecutor.execute(oCmdLine);
} catch (ExecuteException e) {
// TODO Auto-generated catch block
System.err.println("Execution failed.");
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
System.err.println("permission denied.");
e.printStackTrace();
}
}
public static void main(String args[]){
TestScript testScript = new TestScript();
testScript.runScript("sh /home/deepak/Desktop/ftpusers.sh");
}
}

答案 0 :(得分:1)
您应该以root身份运行Java应用程序,或者使用某些sudo命令执行ftpusers.sh
。我可以在这里看到两种可能的选择:
ftpusers.sh
,gksudo
或类似方式调用kdesudo
- 它会提示用户是否可以将应用程序作为root并可能要求输入密码。 sudo
命令并手动将此命令中的IO重定向到应用程序的IO 请注意,此方法不适用于所有环境(例如,sudo可能不可用),因此我只需将"permission denied."
消息更改为"Application foor must be started as root"
,并要求用户运行具有适当权限的Java应用程序
答案 1 :(得分:0)
以root用户身份运行java程序,或运行setuid脚本来提升权限。如果是后者,请确保没有未经授权的用户可以访问该脚本。