Linux,Unix,BSD

[linux] 특정 명령을 root 권한으로 실행하는 방법

채윤아빠 2022. 5. 14. 10:33
728x90
반응형

개요

특정 명령을 비밀번호 없이 루트(root) 권한으로 실행하는 방법들을 알아 보겠습니다.

시험환경

  • SBC : Rock5B
  • OS : Armbian 23.11.1 Jammy / Linux 5.10.160-legacy-rk35xx

chmod 이용 방법

가장 손쉬운 방법으로 chmod 명령으로 해당 명령 자체에 "root" 권한을 부여하는 방법입니다.

$ sudo chmod 4755 {command}
$ sudo chmod u+s {command}


위와 같이 명령에 "root" 권한을 부여한 뒤에, 정보를 확인해 보면, 첫 부분에 "-rws"와 같이 "x" 부분에 "s"라고 표시된 것을 확인할 수 있습니다. "s"가 부여된 명령은 "root" 권한이 부여되어 실행됩니다.

$ sudo chmod 4755 t.sh
$ sudo chmod u+s t.sh
$ ls -l
total 8
-rwsr-xr-x 1 hunature hunature  26  5월 11 16:21 t.sh*

sudoers 편집하기

다른 방법은 sudoers 파일에 "sudo" 로 이용할 특정 명령에 대하여 비밀번호를 요청받지 않도록 설정할 수 있습니다.<br />

다음과 같이 "/etc/sudoers" 파일의 마지막 부분에 이용할 명령을 지정해 놓으면, "sudo {command}" 이용 시, 비밀번호 입력 없이 바로 "root" 권한으로 실행이 가능하게 됩니다.

$ sudo sh -c "echo '{user_id} ALL=(root) NOPASSWD: {command}' >> /etc/sudoers"

결론

위 방법들 모두 권한을 부여한 명령이 스크립트 파일일 경우, 악의적인 명령을 추가 편집하여 시스템을 침범할 수 있으니, 스크립트 파일에는 적용하면 안될 것입니다.

어쨌든 특정 명령에 "root" 권한을 부여하여 실행하도록 하는 것은 보안상 위험성이 높은 작업이니 신중하게 고민하고 처리해야만 합니다.


참고자료