빌드 한 API의 결과를 사용하여 특정 파일에서 ACL 사용 권한을 변경하려고합니다.Java 프로세스를 사용하여 Linux ACL 사용 권한을 설정하십시오.
executorService.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println("hello");
JSONArray data = ServerAPI.riskCheck();
if(data != null){
JSONArray policycontent = data;
for(int i = 0; i < policycontent.length(); i++){
JSONObject privilege = policycontent.getJSONObject(i);
String user = privilege.getString("user");
String filepath = privilege.getString("filePath");
String accesses = "";
if(privilege.getBoolean("read") == true){
accesses = accesses + "r";
}
if(privilege.getBoolean("write") == true){
accesses = accesses + "w";
}
if(privilege.getBoolean("execute") == true){
accesses = accesses + "x";
}
if(privilege.getBoolean("execute") == false && privilege.getBoolean("write") == false && privilege.getBoolean("read") == false){
accesses = "-";
}
try {
System.out.println("TRYING TO RUN:");
Process p = Runtime.getRuntime().exec("setfacl -m \"u:" + user + ":" + accesses + "\" " + filepath);
//p.waitFor();
int exitVal = p.waitFor();
System.out.println("Exited with error code "+exitVal);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println("setfacl -m \"u:" + user + ":" + accesses + "\" " + filepath);
}
}
System.out.println(ServerAPI.getRiskValue());
}
},1, 1, TimeUnit.SECONDS);
}
API에 대한 쿼리는 "위험 값이"로 변경 될 때, 그것은 새로운 권한을 얻을 것이다 즉시 확인, 현재 1 초마다 수행된다.
권한을 제정해야하는 파일이있는 폴더에서이 파일을 JAR 파일로 실행하고 있습니다.
JAR을 루트로 실행 중입니다.
루프의 각 반복에서 JAR과 같은 디렉토리에있는 파일에 행을 추가하는 것처럼 간단한 작업을 시도했지만 아무 것도하지 않습니다.
각 명령은 터미널에서 수동으로 실행할 때 작동하는 유효한 명령입니다. System.out.println은 명령이 올바르게 해석되도록하기 위해 사용되었지만 어떤 명령을 시도해도 문제가되지 않았 음을 알기 때문에 아이디어가 부족합니다.
매번 상태 0으로 종료되며, 오류 출력을 포함하여 processbuilder와 그 방법의 변형을 사용하려고 함에도 불구하고 디버그 할 수 없었습니다.
Java 프로그램을 사용하여 수행 할 수없는 것입니까?
미리 감사드립니다.
죄송합니다. 수정하고 싶었던 원래 코드로 다시 돌아가 셨습니다. – user7636904
맞아, 나는 가까운 투표를 철회했다. 아직도 일반적으로'Runtime.exec'보다는'ProcessBuilder'를 사용해야합니다. – Aaron
알았어, 네 질문을 다시 닫으 려구, 미안 : p 이번에는 당신에게 강력한 솔루션을 제공해야합니다! 편집 : 글쎄, 나는 내 이전 투표를 철회 한 이후로 아직 수 없습니다. 여기에 간다 : http://stackoverflow.com/questions/21360619/is-there-a-java-interface-for-managing-unix-acl – Aaron