리눅스 /etc/sudoers 파일 이란?
리눅스 /etc/sudoers 파일이란
리눅스 /etc/sudoers 파일은 특정 사용자 또는 어떤 사용자가 명령을 실행할 수 있는지 제어하고 특정 명령에 대한 암호가 필요한지 여부와 같은 여러 가지 사항에 대해 제어할 수 있는 파일이며 이 중 sudo에 관한 설정을 할 수 있는 파일입니다. sudo로 명령을 사용하면 루트가 아닌 사용자가 슈퍼유저 권한이 필요한 리눅스 명령을 실행할 수 있으며 이에 대한 방법을 지시하는 파일입니다.
testuser@server $ chage -l testuser
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
testuser@server $ chage -l root
chage: Permission denied.
testuser@server $ sudo chage -l root
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for testuser:
sudo 명령어 사용 예시
$ sudo [사용할 명령어]
위 내용은 testuser라는 사용자 계정이 chage -l 명령어로 testuser 계정에 대한 비밀번호 정책에 대한 내용을 볼 수 있지만 testuser 계정으로 root 또는 다른 사용자 계정을 보는 것은 권한 거절로 Permission denied가 출력되게 되지만 sudoers 파일에 testuser계정에 대해 sudo권한을 등록을 해 놓으면 슈퍼유저 권한으로 실행되기 때문에 이러한 다른 권한에 대한 명령들을 수행할 수 있습니다. 하지만 sudo권한이 설정되지 않으면 위 결과의 마지막처럼 패스워드를 입력하는 문구가 출력됩니다.
sudoers write 권한 부여
✔ /etc/sudoers 파일 권한 수정
$ ls -l /etc/sudoers
testuser@server $ ls -l /etc/sudoers
-r--r----- 1 root root 3933 Feb 4 2022 /etc/sudoers
testuser 계정으로 /etc/sudoers 파일의 권한을 보았을 때 sudoers 권한은 440으로 오직 root 사용자와 root사용자 그룹만 읽기 권한(readonly)이 있기 때문에 sudoers파일을 수정을 한다면 root 권한으로 write권한을 부여해야 됩니다.
✔ sudoers 쓰기 권한 부여
# chmod 640 /etc/sudoers
testuser@server $ su -
Password:
Last login: Fri Aug 19 15:29:42 KST 2022 on pts/1
root@server # chmod 640 /etc/sudoers
root@server # ls -l /etc/sudoers
-rw-r----- 1 root root 3933 Feb 4 2022 /etc/sudoers
sudoers 파일은 root 소유자이기 때문에 파일을 수정하기 위하여 root로 로그인을 한 후 chmod 명령어로 440의 권한에 write권한을 부여하여 640으로 변경합니다.
✔ sudoers 파일 조회 및 수정
# cat -n /etc/sudoers | grep -A 2 "Allow root"
root@server # cat -n /etc/sudoers | grep -A 2 "Allow root"
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
sudoers 파일을 수정한 적이 없다면 위 결과 같이 출력이 됩니다. 이때 원하는 일반계정에 sudo권한을 추가하고 싶다면 아래와 같이 sudoers파일을 vi 또는 vim 편집기로 수정 후 저장합니다.
# vim /etc/sudoers
testuser ALL=NOPASSWD: ALL
vi 또는 vim의 편집 명령어를 이용하여 위 문구를 /etc/sudoers 파일 101줄에 추가를 한 후 파일을 저장합니다.
# cat -n /etc/sudoers | grep -A 2 "Allow root"
root@server # vim /etc/sudoers
root@server # cat -n /etc/sudoers | grep -A 2 "Allow root"
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101 testuser ALL=NOPASSWD: ALL
root@server # chmod 440 /etc/sudoers
root@server # ls -l /etc/sudoers
-r--r----- 1 root root 3933 Feb 4 2022 /etc/sudoers
/etc/sudoers 파일을 수정했다면 잘 수정했는지 다시 한번 확인을 한 후 640으로 변경했던 권한을 440으로 다시 권한을 변경을 해줍니다.
일반계정으로 sudo명령어 실행
$ sudo chage -l root
testuser@server $ sudo chage -l root
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
/etc/sudoers 파일이 잘 수정이 되었다면 위 결과뿐만 아니라 다른 명령에서도 sudo명령어가 잘 적용됩니다.
'IT > 리눅스 이론' 카테고리의 다른 글
root 원격 접속 제한 보안 취약점 조치 가이드 (13) | 2022.09.20 |
---|---|
리눅스 pwquality.conf 패스워드 복잡성 보안 취약점 조치 가이드 (14) | 2022.09.17 |
리눅스 터미널 세션 타임아웃 설정 방법(자동 로그아웃) (73) | 2022.08.19 |
리눅스 루트 파티션 구성 디렉토리 종류와 의미 (51) | 2022.08.11 |
리눅스 파티션 기초 - 리눅스 파티션에 대한 이해 (59) | 2022.08.06 |
댓글