Linux 권한 부여

LinuxBeginner
지금 연습하기

소개

Linux 시스템에서 사용자 권한 및 접근 제어 관리는 시스템 관리 및 보안의 기본적인 측면입니다. "superuser do"의 약자인 sudo 명령은 권한이 있는 사용자가 슈퍼유저 또는 root 계정의 권한으로 명령을 실행할 수 있도록 합니다.

이 랩에서는 Linux 환경에서 사용자에게 권한을 부여하고 제한하는 과정을 안내합니다. 사용자를 sudo 그룹에 추가하여 관리 작업을 수행할 수 있도록 하고, 특정 명령에 대한 권한을 제한하는 방법을 배우게 됩니다. 이러한 기술은 민감한 작업에 대한 접근을 신중하게 제어해야 하는 안전한 시스템을 유지하는 데 필수적입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 82%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

사용자 관리 및 sudo 기본 이해

이 단계에서는 Linux 의 사용자 관리와 sudo 명령의 기본 사항에 대해 배우게 됩니다. 새로운 사용자를 생성하고 관리 권한을 부여하는 방법을 이해하게 됩니다.

sudo 란 무엇인가?

sudo 명령은 권한이 있는 사용자가 다른 사용자, 일반적으로 슈퍼유저 (root) 의 보안 권한으로 명령을 실행할 수 있도록 합니다. 이는 root 사용자로 로그인하지 않고도 관리 작업을 수행할 수 있는 방법을 제공하며, 이는 보안 모범 사례로 간주됩니다.

새로운 사용자 생성

새로운 사용자 계정을 생성하는 것으로 시작해 보겠습니다. 터미널을 열고 다음 명령을 실행합니다.

sudo adduser trusted_advisor

새로운 사용자에 대한 암호와 몇 가지 선택적 정보를 입력하라는 메시지가 표시됩니다. 이 랩에서는 password123과 같은 간단한 암호를 설정하고 Enter 키를 눌러 다른 필드를 비워둘 수 있습니다.

출력은 다음과 유사해야 합니다.

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

사용자 정보 확인

사용자가 성공적으로 생성되었는지 확인하려면 /etc/passwd 파일의 내용을 검사할 수 있습니다.

grep trusted_advisor /etc/passwd

이 명령은 사용자 정보를 포함하는 한 줄을 표시해야 합니다.

sudo 권한 부여

사용자에게 sudo 권한을 부여하려면 sudo 그룹에 추가해야 합니다. Ubuntu 에서 sudo 그룹의 구성원은 sudo 명령을 사용할 수 있습니다. 다음 명령을 실행합니다.

sudo usermod -aG sudo trusted_advisor

이 명령은 사용자 trusted_advisor를 sudo 그룹 (-G sudo) 에 추가합니다 (-a). 이제 사용자는 관리 권한으로 명령을 실행할 수 있습니다.

sudo 접근 확인

새로운 사용자에게 sudo 접근 권한이 있는지 확인하려면 해당 사용자 계정으로 전환하여 일반적으로 root 사용자만 접근할 수 있는 /root 디렉토리의 내용을 나열해 봅니다.

su - trusted_advisor

메시지가 표시되면 이 사용자에 대해 설정한 암호를 입력합니다. 그런 다음 다음을 실행합니다.

sudo ls /root

다시 암호를 묻는 메시지가 표시됩니다 (처음 sudo 사용). 입력하면 /root 디렉토리의 내용이 표시되어 사용자가 sudo 권한을 가지고 있음을 확인합니다.

마지막으로, trusted_advisor 사용자 세션을 종료하여 원래 사용자로 돌아갑니다.

exit

sudoers 파일을 사용하여 sudo 접근 제한

이 단계에서는 sudoers 파일을 사용하여 사용자의 sudo 권한을 특정 명령으로 제한하는 방법을 배우게 됩니다. 이는 최소 권한의 원칙을 구현하며, 사용자는 작업을 수행하는 데 필요한 최소 권한만 가져야 합니다.

sudoers 파일 이해

/etc/sudoers 파일은 누가 sudo 명령을 사용할 수 있고 어떤 명령을 실행할 수 있는지 제어합니다. 이 파일은 구문 오류로 인해 시스템에서 잠길 수 있으므로 일반 텍스트 편집기로 직접 편집해서는 안 됩니다. 대신, 저장하기 전에 구문 오류를 확인하는 visudo 명령을 항상 사용하십시오.

sudoers 파일 편집

sudoers 파일을 안전하게 편집하려면 visudo 명령을 사용하십시오.

sudo visudo

그러면 sudoers 파일이 기본 편집기 (일반적으로 nano 또는 vi) 에서 열립니다.

sudoers 구문 이해

sudoers 파일에서 sudo 항목의 기본 구문은 다음과 같습니다.

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

여기서:

  • user_or_group: 이 규칙이 적용되는 사용자 또는 그룹
  • host: 이 규칙이 적용되는 호스트 이름 (일반적으로 ALL)
  • run_as_user: 명령이 실행될 사용자 (일반적으로 ALL, 즉 root)
  • run_as_group: 명령이 실행될 그룹 (생략 가능)
  • NOPASSWD: 암호를 입력하지 않고 명령을 실행할 수 있도록 하는 선택적 태그
  • commands: sudo 로 실행할 수 있는 특정 명령

제한된 sudo 접근 추가

파일 끝으로 스크롤하여 다음 줄을 추가하여 trusted_advisor에게 암호 없이 cpmv 명령만 실행할 수 있는 권한을 부여합니다.

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

nano 에서 파일을 저장하려면 Ctrl+O를 누른 다음 Enter를 누르고, 종료하려면 Ctrl+X를 누릅니다.

제한된 sudo 접근 테스트

이제 제한된 sudo 접근이 예상대로 작동하는지 테스트해 보겠습니다. 먼저 현재 디렉토리에 테스트 파일을 생성해 보겠습니다.

echo "This is a test file" > important_file.txt

이제 trusted_advisor 사용자로 전환합니다.

su - trusted_advisor

메시지가 표시되면 암호를 입력합니다.

파일을 root 디렉토리로 복사해 보십시오. 허용되어야 합니다.

sudo cp /home/labex/project/important_file.txt /root/

이것은 암호를 묻지 않고 성공해야 합니다.

이제 허용된 목록에 없는 cat과 같은 명령을 실행해 보십시오.

sudo cat /root/important_file.txt

cat이 허용된 명령 목록에 없으므로 권한 거부 오류가 발생해야 합니다.

마지막으로, 파일이 root 디렉토리로 복사되었는지 확인합니다.

sudo ls /root/

출력에 important_file.txt가 표시되어야 합니다.

trusted_advisor 사용자 세션을 종료합니다.

exit

테스트 파일 제거

정리하려면 테스트 파일을 제거합니다.

sudo rm important_file.txt

sudo 로그 이해 및 보안 고려 사항

이 단계에서는 sudo 로깅 및 보안 모범 사례에 대해 배우게 됩니다. sudo 사용을 모니터링하는 것은 보안 및 감사 목적으로 중요합니다.

sudo 로깅

사용자가 sudo 로 명령을 실행하면 이러한 작업이 로깅됩니다. 이는 보안 모니터링 및 문제 해결에 유용할 수 있는 감사 추적을 제공합니다.

Ubuntu 에서 sudo 로그는 일반적으로 시스템의 인증 로그인 /var/log/auth.log에 저장됩니다. 최근 sudo 활동을 살펴보겠습니다.

sudo grep sudo /var/log/auth.log | tail -n 10

이 명령은 마지막 10 개의 sudo 관련 로그 항목을 표시합니다. 출력에는 타임스탬프, 사용자 이름 및 sudo 로 실행된 명령이 포함되어야 합니다.

sudo 에 대한 보안 모범 사례

다음은 sudo 권한을 관리하기 위한 몇 가지 모범 사례입니다.

  1. 최소 권한의 원칙 (Principle of Least Privilege): 사용자는 작업을 수행하는 데 필요한 최소 권한만 가져야 합니다.

  2. 특정 명령 사용: 전체 sudo 접근 권한을 부여하는 대신, 사용자가 실행할 수 있는 명령을 정확하게 지정합니다.

  3. 암호 요구 사항 설정: 민감한 작업의 경우, 사용자가 sudo 를 사용할 때 암호를 입력해야 하는지 확인합니다.

  4. 정기적인 감사: sudo 로그 및 sudoers 파일을 주기적으로 검토하여 적절한 구성을 확인합니다.

  5. 불필요한 접근 제거: 사용자가 더 이상 높은 권한이 필요하지 않은 경우, 즉시 sudo 그룹에서 제거합니다.

sudo 접근 제거

사용자에게 더 이상 sudo 권한이 필요하지 않은 경우, sudo 그룹에서 제거할 수 있습니다.

sudo deluser trusted_advisor sudo

사용자가 더 이상 sudo 그룹에 없는지 확인합니다.

groups trusted_advisor

출력에는 더 이상 그룹 목록에 "sudo"가 포함되지 않아야 합니다.

해제된 sudo 접근 테스트

이제 사용자가 더 이상 sudo 로 명령을 실행할 수 없는지 확인해 보겠습니다.

su - trusted_advisor

메시지가 표시되면 암호를 입력합니다.

sudo 로 명령을 실행해 봅니다.

sudo ls /root

이제 권한 거부 오류가 표시되어야 합니다.

trusted_advisor 사용자 세션을 종료합니다.

exit

sudo 접근 다시 추가

이 랩의 목적을 위해 사용자를 다시 sudo 그룹에 추가해 보겠습니다.

sudo usermod -aG sudo trusted_advisor

사용자가 이제 다시 sudo 그룹에 있는지 확인합니다.

groups trusted_advisor

출력에는 이제 그룹 목록에 "sudo"가 포함되어야 합니다.

요약

이 랩에서는 필수적인 Linux 사용자 관리 및 권한 제어 기술을 배웠습니다. 다음 개념과 작업에 대한 실질적인 경험을 얻었습니다.

  1. 사용자 생성 (Creating Users): adduser 명령을 사용하여 새로운 사용자 계정을 생성하는 방법을 배웠습니다.

  2. sudo 권한 부여 (Granting sudo Privileges): 사용자를 sudo 그룹에 추가하여 관리자 권한을 부여하는 방법을 익혔습니다.

  3. sudo 접근 제한 (Restricting sudo Access): sudoers 파일을 사용하여 사용자의 sudo 접근을 특정 명령으로 제한함으로써 최소 권한의 원칙을 구현하는 연습을 했습니다.

  4. sudo 로깅 및 모니터링 (sudo Logging and Monitoring): sudo 활동이 어떻게 로깅되는지, 그리고 보안 목적으로 이러한 로그를 모니터링하는 것의 중요성을 살펴보았습니다.

  5. sudo 접근 관리 (Managing sudo Access): 필요에 따라 사용자에게 sudo 권한을 추가하고 제거하는 방법을 배웠습니다.

이러한 기술은 Linux 시스템 관리 및 보안의 기본입니다. 사용자 권한을 적절하게 관리함으로써 시스템 무결성이나 보안을 손상시키지 않으면서 사용자에게 필요한 리소스에 대한 접근 권한을 부여하는 안전한 시스템을 유지할 수 있습니다.