Linux sudo – 패스워드없이 root권한 명령 실행

■ Linux sudo 명령어는 일반 사용자가 패스워드없이 root 권한의 명령어를 실행할 수 있다.
 

■ sudo를 사용하는 방법은 bash$ sudo [root권한의 명령어]를 입력해야하는데 sudo를 사용하기 위해서는 /etc/sudoers파일에 일반 사용자의 계정이 등록되어 있어야 한다. 등록하는 방법은 echo를 사용하는 방법과 vi 편집기를 이용하는 방법 2가지가 있다. /etc/sudoers 파일 모드는 440(-r–r—–)로 되어 있어 vi 편집기로는 바로  /etc/sudoers를 편집할 수 없고, 먼저 chmod명령어로 파일모드를 변경 후 편집할 수 있다. 그리고 특정 root권한 명령어만 실행할 수 있게 하는 방법과 모든 root권한의 명령어를 실행할 수 있는 권한을 부여하는 방법이 있다.
 

■ echo를 사용하여 일반사용자(‘nextman’) 가 특정 root 명령어(아래의 예는 halt명령어)를 사용할 수 있게 sudo 권한 부여하는데 아래 echo명령어는 root 권한으로 실행한다.

bash# echo 'nextman ALL=NOPASSWD:/usr/sbin/halt' >> /etc/sudoers

 

■ echo를 사용하여 일반사용자(‘nextman’) 가 root 명령어 전체를 사용할 수 있게 sudo 권한 부여하는데 아래 echo명령어는 root 권한으로 실행한다.

bash# echo 'nextman ALL=NOPASSWD:ALL' >> /etc/sudoers

 

■ vi 편집기를 사용하는 방법은 먼저 파일을 수정할 수 있게 파일 모드를 변경 후 /etc/sudoers를 수정 후 보안을 위해 다시 파일 모드를 원상태로 복구 시켜야한다. 부여할 권한 대상은 전체 root 권한을 줄 경우는 ALL을 주고 특정 root 명령어를 줄 경우는 ‘/usr/sbin/halt’처럼특정 명령어만 입력한다. /etc/sudoers파일의 마지막에 halt, reboot 권한인 ‘nextman ALL=NOPASSWD:/usr/sbin/halt, /usr/sbin/reboot’를 추가한다.

bash# ls -al /etc/sudoers
-r--r----- 1 root root 4243 Mar 10 05:52 /etc/sudoers
bash# chmod 640 /etc/sudoers
bash# ls -al /etc/sudoers
-rw-r----- 1 root root 4243 Mar 10 05:52 /etc/sudoers
bash# vi /etc/sudoers
nextman ALL=NOPASSWD:/usr/sbin/halt, /usr/sbin/reboot
혹은
nextman ALL=NOPASSWD:ALL
:wq
bash# chmod 440 /etc/sudoers

 

■ 이제 일반 사용자(‘nextman’)가 root 권한 명령어를 사용할 수 있게 되었다. 다음을 한 번 실행해 본다. 이건 시스템 리부팅 명령어이다. 신중하게 사용하길…

bash# su - nextman
bash$ sudo reboot

 
 
 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다