Linux의 명령어를 Java에서 실행하는 방법 문의
글쓴이: sinji81 / 작성시간: 월, 2016/09/12 - 12:36오후
안녕하세요,
Linux(Redhat)에 Java를 사용중인데, Linux의 명령어를 실행해야 됩니다.
Runtime exec를 이용하여 실행하여 사용중인데, root권한이 필요할 경우에는 어떻게 해야 될지 몰라 문의드립니다.
혹시 해보신 경험이 있으시거나, 방법을 아시는 분은 알려주세요~
아..사용하려는 명령어는 date명령으로 서버 시각정보 변경하려고 합니다. user권한으로는 어떤 이유인지 모르겠지만 경우에 따라 시각정보가 변경이 되지 않아 root권한으로 변경하려고 합니다.
Forums:
시간이라면
NTP를 쓰시는편이 좋지 않을까요?
http://mslee89.tistory.com/74
상대 서버에서 시간정보를 얻어와서 설정해야 하는
상대 서버에서 정해진 인터페이스로 시간정보를 얻어와서 설정해야 하는 상황이라...NTP는 사용하기 어렵네요...
댓글 감사합니다~
sudo 명령을 이용하시면 될 것 같습니다만..
이런식으로 sudo 설정을 해 놓고 호출을 하시면 되기는 합니다만, 보안에 많이 취약 하겠죠. root권한을 주는 것이니.. private network에서 사용하는 것이라면 sudo를 이용하시면 되실 듯..
Local망에서 사용할 시스템이라 sudo 명령을
Local망에서 사용할 시스템이라 sudo 명령을 이용하는게 적절할 것 같네요..
감사합니다~
s 권한을 추가
실행 대상 파일에 s 권한을 주는건 어떨가요?
실행 시점에, 해당 파일의 소유자 권한으로 동작하도록이요..
chmod 4755 실행파일이름
이게 도움이 될 수 있었으면 좋겠네요..
https://nicesj.com
https://blog.nicesj.com
root권한으로 suid를 주는 것 보다는 sudo를
root권한으로 suid를 주는 것 보다는 sudo를 사용하는 것을 권장 합니다. root권한이 아니더라도 system package의 permission을 수정하는 것은 권장할 만한 사항이 아닙니다. 보안적으로 문제가 발생햇을 경우, 실행 파일 무결성 검사에 애로가 발생할 수 있습니다.
root 권한을 최소화 하는 것이 중요합니다.
date를 변경하는 것이 목적이라면
이 목적에 한해서만 root 권한을 부여하는 것이 보안상 가장 좋습니다.
date만 변경하는 간단한 daemon 프로그램을 하나 만드시고
domain socket 같이 IPC 가능한 채널을 열어주고
root로 실행시킵니다.
date 변경이 필요한 client가 이 socket에 연결하여 요청을 하는 방식입니다.
보안과 편의성은 상호 배타적이기 때문에
다소 번거롭더라도 이런 방식이 더 안전해보이네요.
댓글 달기