Sudoer 및 sudo 사용하기
root 권한
root
는 일반적으로 unix에 존재하는 특권 사용자의 이름을 의미하는데 모든 권한을 가지고 있다고 보면 되겠다.
매우 강력하여 편리하게 보이지만 위험할 수 있기 때문에 모든 계정에 root
권한을 주지는 않는다.
일반 계정이 sudo
명령어로 root
권한을 가진 채 커맨드를 이용하기 위해서는 sudoer
파일에 필요한 부분을 적어서 사용하게 된다.
Sudoer란
sudoer
란 일반 계정이 sudo 명령어를 사용해서 임시로 root 권한을 얻어 이용할 수 있는 것을 의미한다.
또한 root 권한을 계정에 부여할 수도 있다.
파일의 위치는 /etc/sudoers
이다.
예를 들어
1
deploy ALL=NOPASSWD: ALL, !/bin/su, !/sbin/reboot, !/usr/bin/reboot, !/sbin/shutdown, !/sbin/halt, !/usr/bin/halt, !/sbin/poweroff, !/usr/bin/poweroff, !/sbin/init, !/usr/sbin/adduser, !/usr/sbin/useradd, !/usr/sbin/userdel, !/sbin/iptables, !/usr/bin/passwd
이런식으로 deploy 계정에 대해 사용할 수 있는 커맨드와 사용할 수 없는 커맨드들이 적혀있다.
앞에 ! 느낌표
가 붙은 커맨드는 sudo 명령어로 사용하게 되면 아래처럼 에러 문구
가 발생한다.
1
죄송하지만 deploy 사용자는 '/usr/sbin/useradd TEST'을(를) root(으)로 실행하도록 허가받지 않았습니다.
sudo -s
-s (–shell) 옵션은 쉘
을 의미한다.
즉, root
권한을 가진 shell을 새롭게 연다는 것이다.
sudo passwd (*) 실행 안될 때
/etc/sudoers 에서 deploy 계정의 경우 !/usr/bin/passwd 이렇게 passwd 명령어를 sudo
로 사용할 수 없게 막혀있는 것을 확인할 수 있다.
1
2
3
4
5
6
7
[deploy@ ~]$ sudo passwd
-> 죄송하지만 deploy 사용자는 '/usr/bin/passwd'을(를) root(으)로 실행하도록 허가받지 않았습니다.
[deploy@ ~]$ sudo -s
[root@ ~]# sudo passwd
-> root 사용자의 비밀 번호 변경 중
-> 새 암호:
요런식으로 sudo (명령어)
로는 안되지만, sudo -s 옵션으로 들어가서는 되는 것을 확인할 수 있다.