sudo는 root가 아닌 사용자가 root 권한의 명령어를 실행하게 하는 명령어 입니다. 즉, 현재 ID 에서 다른 ID의 권한을 빌려 쓴다고 보면 된다.
본 포스팅에서는 sudo를 설정하는 방법에 대해 알아보자.
# 일반 사용자(여기서는 mpjamong)에게 권한 부여
[root@magicpipe ~]# visudo
# 해당 파일 맨 마지막에 아래와 같이 추가 후 저장
mpjamong ALL=(ALL) ALL
# 설정 적용 확인 (sudo 없이 실행 안됨)
[mpjamong@magicpipe ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
# 설정 적용 확인 (sudo 명령어를 통한 파일 확인 가능)
[mpjamong@magicpipe ~]$ sudo cat /etc/shadow
[sudo] password for mpjamong:
.
.
cockpit-wsinstance:!!:18447::::::
flatpak:!!:18447::::::
rngd:!!:18447::::::
# sudo 권한에서 시스템 종료, 재시작, 시스템 상태 체크 명령어 실행 불가능 설정
[root@magicpipe ~]# visudo
# 해당 파일 라인 49번째 줄에 아래 내용 추가
Cmnd_Alias SHUTDOWN = /usr/sbin/halt, /usr/sbin/shutdown, \
/usr/sbin/poweroff, /usr/sbin/reboot, /usr/sbin/init, /usr/bin/systemctl
# 해당 파일 맨 마지막 라인에 아래와 같이 추가 후 저장
mpjamong ALL=(ALL) ALL, !SHUTDOWN
# 설정 적용 확인
[mpjamong@magicpipe ~]$ sudo /usr/sbin/reboot
[sudo] password for mpjamong:
Sorry, user mpjamong is not allowed to execute '/usr/sbin/reboot' as root on magicpipe.
# 특정 그룹(여기서는 usermgr)에서 sudo 권한으로 실행 가능한 명령어 설정
[root@magicpipe ~]# visudo
# 해당 파일 라인 49번째 줄에 아래 내용 추가
Cmnd_Alias USERMGR = /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, \
/usr/bin/passwd
# 해당 파일 맨 마지막 라인에 아래와 같이 추가 후 저장
%usermgr ALL=(ALL) USERMGR
# 설정 적용 확인 (usermgr 그룹에 지정할 테스트 ID 생성과 그룹 지정)
[root@magicpipe mpjamong]# useradd usertest07
[root@magicpipe mpjamong]# passwd usertest07
Changing password for user usertest07.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[root@magicpipe mpjamong]# groupadd usermgr
[root@magicpipe mpjamong]# usermod -G usermgr usertest07
# 설정 적용 확인 (테스트 ID에서 sudo 권한에서 지정한 명령어 확인)
[root@magicpipe mpjamong]# su usertest07
[usertest07@magicpipe mpjamong]$ sudo useradd testuser11
[sudo] password for usertest07:
[usertest07@magicpipe mpjamong]$ sudo passwd testuser11
Changing password for user testuser11.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# ID 마다 sudo 권한으로 실행 가능한 명령어 설정
[root@magicpipe ~]# visudo
# 해당 파일 맨 마지막 라인에 아래와 같이 추가 후 저장
test001 ALL=(ALL) /usr/sbin/visudo
test002 ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel, /usr/sbin/usermod, /usr/bin/passwd
test003 ALL=(ALL) /usr/bin/vi
# sudo log 설정
[root@magicpipe ~]# visudo
# 해당 파일 맨 마지막 라인에 아래와 같이 추가 후 저장
Defaults syslog=local1
# syslog 설정
[root@magicpipe mpjamong]# vi /etc/rsyslog.conf
# 해당 파일 라인 49번째 줄에 아래 내용 추가
*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages
local1.* /var/log/sudo.log
# syslog 설정 적용
[root@magicpipe mpjamong]# systemctl restart rsyslog
# sudo log 확인
[root@magicpipe log]# ls -al /var/log/sudo.log
-rw------- 1 root root 396 Jul 6 10:20 /var/log/sudo.log
[root@magicpipe log]# cat /var/log/sudo.log
Jul 6 10:20:33 magicpipe sudo[7232]: test001 : TTY=pts/0 ; PWD=/home/mpjamong ; USER=root ; COMMAND=/sbin/visudo
Jul 6 10:20:43 magicpipe sudo[7240]: test001 : command not allowed ; TTY=pts/0 ; PWD=/home/mpjamong ; USER=root ; COMMAND=/sbin/adduser
Jul 6 10:20:50 magicpipe sudo[7245]: test001 : command not allowed ; TTY=pts/0 ; PWD=/home/mpjamong ; USER=root ; COMMAND=/sbin/adduser test008
[CentOS 8] Disk 관리 | fstab 설정 (0) | 2020.07.21 |
---|---|
[CentOS 8] Disk 관리 | mount, umount (0) | 2020.07.15 |
[CentOS 8] 초기 세팅 | Repository 추가 설정 (0) | 2020.07.06 |
[CentOS 8] 초기 세팅 | Update System (0) | 2020.07.04 |
[CentOS 8] 초기 세팅 | Services 확인 (0) | 2020.07.03 |
댓글 영역