본문 바로가기

server/centos 7

CentOS 7 sudo 설정 방법

CentOS 7 sudo 설정

시스템 상에서 root 유저로 사요하는 것보다 root 권한이 필요할 경우에만 sudo를 사용한는 것이 시스템 안정성과 보안 측면에서 좋습니다.
여기에서는 sudo 권한을 설정하는 법을 설명하겠습니다.

root 의 모든 권한을 특정 유저에게 위임하기

visudo 명령어를 이용해 /etc/sudoers 파일을 편집한다.

[root@localhost ~]# visudo

제일 마지막 라인에 아래 내용을 추가한다.
user라는 유저에게 모든 권한을 이용가능하게 선언하는 내용이다.

user    ALL=(ALL)       ALL

동작 확인하기

  • sudo를 사용하지 않았을 경우(권한 없어서 실행 안됨)
[user@localhost ~]$ /usr/bin/cat /etc/shadow
cat: /etc/shadow: Permission denied     
  • sudo를 사용했을 경우 (정상 동작)
[user@localhost ~]$ sudo /usr/bin/cat /etc/shadow
[sudo] password for user:     # 패스워드 입력
daemon:*:16231:0:99999:7:::
adm:*:16231:0:99999:7:::
lp:*:16231:0:99999:7:::
...
...

root 의 모든 권한을 특정 그룹에게 위임하기

visudo 명령어를 이용해 /etc/sudoers 파일을 편집한다.

[root@localhost ~]# visudo

제일 마지막 라인에 아래 내용을 추가한다.
user라는 유저에게 모든 권한을 이용가능하게 선언하는 내용이다.

usergroup    ALL=(ALL)       ALL

그룹 생성하기

[root@localhost ~]# groupadd usergroup

유저를 그룹에 추가하기

[root@localhost ~]# usermod -G usergroup user

동작 확인하기

  • 유저 생성하고 패스워드 설정하기
[user@localhost ~]$ sudo /usr/sbin/useradd testuser
[user@localhost ~]$     # 메세지가 없으면 정상 생성된 것임
[user@localhost ~]$ sudo /usr/bin/passwd testuser
Changing password for user testuser.
New UNIX password:     # testuser의 패스워드 입력
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

특정 명령어만 제외하는 방법

visudo 명령어를 이용해 /etc/sudoers 파일을 편집한다.

[root@localhost ~]# visudo

대략 49번째 라인 근처에 아래 내용을 추가한다.

  • Cmnd_Alias SHUTDOWN 에 shutdown 관련 명령어를 선언한다.
  • shutdown 명령어를 제한하도록 설정한다.
Cmnd_Alias SHUTDOWN = /sbin/halt, /sbin/shutdown, \
                      /sbin/poweroff, /sbin/reboot, /sbin/init

user ALL=(ALL) ALL, !SHUTDOWN

동작 확인하기

  • 아래와 같이 선언된 특정 명령어가 거부되어 실행이 되지 않는다.
[user@localhost ~]$ sudo /sbin/shutdown -r now
Sorry, user user is not allowed to execute '/sbin/shutdown -r now' as root on localhost.srv.world.

특정 명령어만 특정 유저에게 허가하는 방법

visudo 명령어를 이용해 /etc/sudoers 파일을 편집한다.

[root@localhost ~]# visudo

파일 마지막 라인에 아래 내용을 추가한다.

  • 임의에 user1, user2, user3 에게 특정 명령어를 허가
user1  ALL=(ALL) /usr/sbin/visudo
user2  ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd
user3  ALL=(ALL) /bin/vi

동작 확인하기

  • user1 의 visudo 실행하기
[user1@localhost ~]$ sudo /usr/sbin/visudo
  • user2 의 userdel 실행하기
[user2@localhost ~]$ sudo userdel -r testuser
  • user3 의 vi 실행하기
[user3@localhost ~]$ sudo vi /boot/grub/grub.conf

모두 정상 동작하는 것을 확인할 수 있다.

sudo 로그 위치

/var/log/secure