소개
Linux 에서 root 사용자는 시스템을 제한 없이 제어할 수 있습니다. 하지만 일상적인 작업을 root로 로그인해 수행하는 것은 위험합니다. 대신 일반 사용자가 특정 명령을 높은 권한으로 실행할 수 있도록 해 주는 sudo를 사용합니다.
누가 sudo를 사용할 수 있고 어떤 작업을 수행할 수 있는지 제어하는 파일은 /etc/sudoers입니다. 이 파일은 위임된 관리 권한을 정의하므로 Linux 시스템에서 가장 민감한 정책 파일 중 하나입니다.
이 파일을 관리할 때는 각별히 주의해야 합니다. 구문 오류 하나만으로도 관리자 계정을 포함한 모든 사용자가 시스템에 접근하지 못할 수 있습니다. 따라서 일반 텍스트 편집기로 이 파일을 직접 편집해서는 안 됩니다. 대신 visudo라는 특수 도구를 사용합니다.
이 파일은 단순한 편의 설정이 아니라 정책 파일입니다. 누가 관리 권한을 빌릴 수 있는지, 어떤 조건에서 사용할 수 있는지, 어떤 명령에 사용할 수 있는지를 정의합니다.
이 실습에서는 다음 작업을 수행합니다.
visudo를 사용해 sudoers 구성을 안전하게 확인합니다.- 사용자에게 관리 권한을 부여합니다.
- 해당 권한이 올바르게 작동하는지 확인합니다.
현재 권한 확인
변경하기 전에 현재 상태를 확인합니다. 이 실습에서는 alex라는 일반 사용자를 만들어 두었습니다. 기본적으로 새 사용자는 관리 권한을 갖지 않습니다.
Sudoers 파일 확인
구성을 확인할 때는 visudo를 사용합니다. 이 도구는 파일을 잠그고 저장하기 전에 구문을 검사하므로, 실수로 시스템 접근이 차단되는 것을 방지합니다.
이러한 검증 기능이 바로 visudo가 필요한 이유입니다. 일반 텍스트 편집기를 사용하면 작은 오타를 파일 저장 후에야 발견할 수 있으며, 그때는 이미 sudo 접근이 작동하지 않을 수 있습니다.
현재 구성을 확인합니다.
sudo visudo
어떤 사용자에게 권한이 정의되어 있는지 보여 주는 행이 표시됩니다. 예를 들면 다음과 같습니다.
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
이 환경에서는 visudo가 nano 편집기로 파일을 엽니다. 아무것도 변경하지 않고 종료하려면 Ctrl+X를 누릅니다.
접근 권한이 없는지 확인
이제 alex 사용자로 전환한 후 관리 작업을 수행해 봅니다.
먼저 alex 사용자로 전환합니다.
su - alex
메시지가 표시되면 password를 입력합니다.
그런 다음 제한된 /root 디렉터리의 내용을 나열해 봅니다.
sudo ls /root
메시지가 표시되면 password를 입력합니다.
다음 오류가 표시되는지 확인합니다.
alex is not in the sudoers file. This incident will be reported.
이 메시지는 alex가 일반 사용자이며 관리 작업을 수행할 수 없음을 확인해 줍니다.
이것이 안전한 기본 설정입니다. Linux 보안에서는 적은 권한으로 시작하고 필요한 권한만 부여하는 것이 최소 권한 원칙의 일부입니다.
마지막으로 원래 사용자 (labex) 로 돌아갑니다.
exit
사용자 권한 구성
alex가 root 로 명령을 실행할 수 있도록 하려면 /etc/sudoers 파일에 규칙을 추가해야 합니다.
먼저 파일을 안전하게 엽니다.
sudo visudo
파일의 끝으로 이동하거나 "User privilege specification" 섹션을 찾은 다음, 다음 행을 추가합니다.
alex ALL=(ALL:ALL) ALL
규칙 구성:
alex: 권한을 부여할 사용자 이름입니다.- 첫 번째
ALL: 모든 Host에서 들어오는 연결에 이 규칙을 적용합니다. (ALL:ALL): 모든 User(예: root) 와 모든 Group의 권한으로 명령을 실행할 수 있습니다.- 마지막
ALL: Any Command를 실행할 수 있습니다.
이 규칙은 교육을 위해 의도적으로 광범위하게 설정했습니다. 실제 시스템에서는 관리자가 제한 없이 모든 작업을 허용하기보다 특정 명령만 허용하는 더 좁은 sudo 규칙을 선호하는 경우가 많습니다.
마지막으로 저장하고 종료합니다.
- 저장하려면
Ctrl+O를 누른 다음Enter를 누릅니다. - 종료하려면
Ctrl+X를 누릅니다.
오타를 입력했다면 visudo가 경고하여 잘못된 구성이 적용되는 것을 방지합니다.
변경된 권한 확인
이제 구성을 변경했으므로 alex는 모든 관리 권한을 가져야 합니다. 이를 확인합니다.
먼저 alex 사용자로 전환합니다.
su - alex
그런 다음 권한이 필요한 명령을 다시 실행합니다.
sudo ls /root
메시지가 표시되면 password를 입력합니다.
결과를 확인합니다. 이제 접근 거부 오류 없이 /root 디렉터리의 내용이 표시되어야 합니다. 디렉터리는 비어 있거나 몇 개의 구현 파일을 포함할 수 있습니다.
snap
이 결과는 alex 사용자에게 권한 상승 권한을 성공적으로 부여했음을 확인해 줍니다.
이 시점에도 alex가 기본적으로 root 가 된 것은 아닙니다. 대신 alex에게 sudo를 통해 권한이 높은 실행을 요청할 수 있는 권한을 위임한 것입니다. 이는 일반적인 root 로그인보다 안전하고 감사 추적에도 유리합니다.
마지막으로 alex 세션을 종료합니다.
exit
요약
이 실습에서는 사용자 권한을 안전하게 관리하는 방법을 배웠습니다.
핵심 내용:
- 안전 우선:
/etc/sudoers를 편집할 때는 항상visudo를 사용합니다. 파일을 직접 편집하지 않습니다. - 권한 위임: root 비밀번호를 공유하지 않고 특정 사용자에게 root 접근 권한을 부여할 수 있습니다.
- 검증: 새 권한이 의도한 대로 작동하는지 항상 테스트합니다.
sudoers 구성을 익히면 사용자에게 필요한 권한만 정확히 부여하는 안전한 시스템을 구축할 수 있습니다. 필요한 것보다 더 많은 권한도, 더 적은 권한도 부여하지 않습니다.



