sudo UNIX 및 Linux에서의 강력한 권한 관리 도구

sudosuperuser do 또는 substitute user do의 약자2로, 리눅스 및 UNIX 기반 시스템에서 다른 사용자(특히 관리자)의 권한으로 명령어를 실행하기 위한 프로그램입니다. 주로 시스템 설정 변경, 보안 관련 작업, 관리자 권한이 필요한 소프트웨어 설치 및 제거 등에 사용됩니다. sudo를 사용하면 일반 사용자가 일시적으로 높은 권한을 얻어 행동할 수 있으므로, 전체 시스템을 관리자 권한으로 사용하는 것보다 보안성이 높아집니다.

아래 설명은 comeinsidebox.com 에서 테스트 및 검증 후 작성 된 내용이지만 이것이 본문의 내용의 정확성이나 신뢰성에 대해 보증을 하는 것은 아니니 단순 하게 참고용으로 확인바랍니다.

sudo가 널리 사용되는 이유

이렇게 sudo는 UNIX 및 Linux 환경에서 권한 관리의 중심 역할을 하며, 시스템 보안과 효율성을 높이는 중요한 도구입니다.

리눅스 권한 퍼미션 chmod chown rwxrwxrwx

sudo의 중요성

UNIX 및 Linux 운영체제는 사용자 권한과 프로세스 권한을 명확하게 분리하여 관리합니다. 이러한 권한 관리는 시스템의 안정성과 보안을 높이는 데 중요한 역할을 합니다. 사용자는 일반 사용자 또는 관리자로 분류되며, 일반 사용자는 제한된 권한으로 시스템을 사용하고 관리자는 거의 모든 작업을 수행할 수 있는 권한을 갖습니다.

  • 사용자 권한: 파일 및 디렉토리에 대한 읽기, 쓰기, 실행 권한을 제어합니다.
  • 프로세스 권한: 시스템 설정 변경, 서비스 관리, 소프트웨어 설치 등을 제어합니다.

sudo 사용 목적

전술한 대로 sudo는 UNIX 및 Linux에서 특정 명령어를 관리자 권한으로 실행하도록 도와주는 프로그램입니다. 이러한 기능은 여러 가지 중요한 이유로 필수적입니다.

  • 보안을 강화할 수 있습니다. 일반 사용자가 관리자 권한이 필요한 작업을 수행할 때, sudo를 사용하면 불필요한 전체 관리자 접근을 피하고, 정확한 권한만 부여할 수 있습니다.
  • 규모 확장이 용이합니다. 여러 관리자가 있는 시스템에서 sudo를 사용하면, 각 관리자에게 필요한 권한만 부여하여 작업을 분산시킬 수 있으며, 각 작업의 추적도 가능합니다. 예를 들어 root가 아닌 사용자가 sudo 명령어를 사용한 경우, 간단한 방식으로 log 추적을 할 수 있습니다.
  • 효율적인 권한 관리가 가능해집니다. sudo를 사용하면 사용자별, 그룹별, 호스트별로 세밀한 권한 제어가 가능합니다. 이를 통해 시스템 관리가 훨씬 유연하고 효율적이게 됩니다.
  • 무엇보다 사용이 편리합니다. 사용자는 자신의 비밀번호로 관리자 권한을 일시적으로 얻을 수 있으며, 불필요한 로그인/로그아웃을 피할 수 있습니다.
Linux 서버 접속하는 방법 웹 애플리케이션 파일 관리하기

sudo 기본 사용 방법

sudo를 설치하고 사용하는 기본 형식과 권한 설정 파일 구성과 관련된 기본적인 사용 방법을 간단하게 정리합니다.

설치하기

대부분의 UNIX/Linux 배포판은 기본적으로 sudo가 설치 되어 있어, 추가 설치없이 사용할 수 있습니다. 만약 설치되어 있지 않다면, 운영체제 또는 배포판에 맞는 패키지 관리자를 사용해 쉽게 설치할 수 있습니다.

Debian/Ubuntu 계열

apt-get install sudo

RedHat/CentOS 계열

yum install sudo
맥 윈도우 리눅스 CopyQ로 클립보드 저장하고 쉽게 재사용하기

명령 사용 기본

sudo를 사용하여 명령어를 실행하면, 해당 명령어가 관리자 권한으로 실행됩니다. 기본 사용법은 다음과 같습니다.

sudo [명령어]

예를 들어, 시스템 업데이트를 위해 패키지 목록을 업데이트하려면 다음을 실행합니다.

sudo apt-get update

권한 설정 파일 sudoers 구성

sudo의 권한은 /etc/sudoers 파일을 통해 관리됩니다. 이 파일은 sudo를 사용할 수 있는 사용자와 그룹, 실행 가능한 명령어 등을 정의합니다.

주의: 이 파일은 시스템의 중요한 보안 설정을 담고 있으므로, 변경 시 주의가 필요합니다. 변경 후 문제가 생기지 않도록, 설정을 확인하고 테스트하는 것이 좋습니다.
사용자명 ALL=(ALL:ALL) 명령어

/etc/sudoers 파일을 편집하려면 visudo 명령어를 사용합니다. 사용자별로 권한을 부여하거나 제한할 수 있으며, 기본적인 형태는 위와 같습니다.

참고: visudo 명령은 /etc/sudoers 파일을 안전하게 편집하기 위한 명령어로, 일반적으로 vi 에디터를 기본으로 사용합니다. 만약 visudo를 사용할 때 다른 에디터를 사용하고 싶다면, VISUAL 또는 EDITOR 환경 변수를 설정하여 변경할 수 있습니다. 다만, visudo 명령어를 사용하면 편집 후 문법을 자동으로 검사해주어, 문법 오류가 있을 경우 시스템의 정상 작동하지 않을 위험을 줄여줍니다.

그룹별로도 동일한 방법으로 설정할 수 있으며, 그룹은 % 기호로 시작합니다.

%그룹명 ALL=(ALL:ALL) 명령어
리눅스 우분투 데비안 UFW 방화벽 기본 설정 알아보기

sudo의 주요 옵션

sudo 명령은 여러 옵션을 이용해 다양한 방식으로 활용할 수 있습니다. 아래에는 주요 옵션과 설명을 간단하게 정리합니다.

  • -i (Interactive): 로그인 쉘을 실행하고, 해당 사용자의 환경변수를 로드합니다. sudo -i 와 같이 사용할 수 있습니다.
  • -u (User): 특정 사용자로 명령을 실행합니다. sudo -u 사용자명 명령어 와 같이 사용할 수 있습니다.
  • -b (Background): 명령을 백그라운드에서 실행합니다. sudo -b 명령어 와 같이 사용할 수 있습니다.
  • -l (List): 현재 사용자가 실행할 수 있는 명령 목록을 표시합니다. sudo -l 와 같이 사용할 수 있습니다.
  • -k (Kill): 사용자의 인증 시간을 초기화하여 다시 인증을 요구합니다. sudo -k 와 같이 사용할 수 있습니다.
  • -s (Shell): 현재 사용자의 쉘로 명령을 실행합니다. sudo -s 와 같이 사용할 수 있습니다.
  • -p (Prompt): 사용자 정의 암호 프롬프트를 설정합니다. sudo -p "프롬프트" 명령어 와 같이 사용할 수 있습니다.
  • -H (HOME): HOME 환경변수를 대상 사용자의 홈 디렉터리로 설정합니다. sudo -H 명령어 와 같이 사용할 수 있습니다.
  • -C (Close): 파일 설명자가 명령어 실행 후에 닫히도록 지정한 수준을 설정합니다. sudo -C 수준 명령어 와 같이 사용할 수 있습니다.
  • -g (Group): 특정 그룹으로 명령을 실행합니다. sudo -g 그룹명 명령어 와 같이 사용할 수 있습니다.

sudosu

sudosu 명령과 조합에 대해서 간단하게 다루어보도록 하겠습니다.

su

su(Substitute User) 명령어는 루트 뿐만 아니라 다른 사용자 계정으로도 전환할 수 있는 명령어입니다. su 명령어를 통해 다른 사용자 계정으로 전환하는 것은 시스템 관리나 여러 사용자 간 작업을 수행할 때 유용합니다.

  • su 사용자명: 특정 사용자로 전환하고자 할 때 사용합니다. 예를 들어, su john은 현재 사용자를 "john" 사용자로 전환합니다.
  • su - 사용자명: 사용자 환경변수와 함께 특정 사용자로 전환하고자 할 때 사용합니다. su - john은 "john" 사용자의 로그인 쉘과 환경 변수를 로드합니다.
  • su: 루트 사용자로 전환하고자 할 때 사용하며, 루트 비밀번호가 필요합니다.

sudo su

sudo su는 위에서 언급한 옵션 같은 개념이 아닌 명령어 조합입니다. 많은 사용자들이 시스템 관리 작업을 수행하기 위해 자주 사용하는 명령어 조합으로 다음과 같이 사용됩니다.

  • sudo su: 현재 사용자의 권한을 루트 사용자로 전환합니다. 일반 사용자가 슈퍼유저의 쉘을 열기 위해 사용합니다. sudo su는 먼저 sudo를 통해 슈퍼유저 권한을 얻은 후, su 명령어로 root 사용자의 쉘을 실행합니다.
  • sudo su - 사용자명: 현재 사용자의 권한을 지정된 사용자의 권한으로 전환합니다. 해당 사용자의 환경 변수와 로그인 쉘을 로드합니다.

시스템 관리 작업을 수행할 때 root 사용자의 환경 설정을 그대로 가져오려는 경우 sudo -i를 사용하는 것이 더 좋을 수 있으며, 간단한 작업을 수행하거나, 특별한 환경 설정이 필요하지 않은 경우에는 sudo su를 사용하는 것이 편리합니다.

sudo susudo -i

sudo su

  • sudo su는 먼저 sudo를 통해 슈퍼유저 권한을 얻은 후, su 명령어로 루트 사용자의 쉘을 실행합니다.
  • 로그인 쉘이 아닌 루트의 쉘을 실행하기 때문에, 루트 사용자의 프로파일 스크립트가 실행되지 않을 수 있습니다.
  • sudo -i (Interactive)

  • sudo -i 명령은 로그인 쉘을 실행하고, 해당 사용자의 환경 변수를 로드합니다.
  • 루트 사용자의 프로파일 스크립트를 실행하여, 더 완벽한 로그인 환경을 제공합니다.

두 명령어는 루트 사용자로 전환하는 것에 공통점이 있지만, sudo -i는 루트 사용자의 환경을 보다 완벽하게 로드합니다.

  • 시스템 관리 작업을 수행할 때 루트 사용자의 환경 설정을 그대로 가져오려는 경우 sudo -i를 사용하는 것이 더 좋을 수 있습니다.
  • 간단한 작업을 수행하거나, 특별한 환경 설정이 필요하지 않은 경우에는 sudo su를 사용해도 괜찮습니다.

Linux 서버 접속하는 방법 웹 애플리케이션 파일 관리하기

sudo 사용 시 주의 사항

sudo를 사용할 경우 각 사용자에게 적절한 권한을 부여하여 시스템 보안을 유지하는 것이 중요합니다. 관리자 권한을 가진 사용자 수를 최소화하고, 필요한 경우에만 임시로 명령어 실행 권한을 부여하는 것을 권장합니다. 또한, /etc/sudoers(또는 visudo 명령을 이용해) 파일에서 권한 설정을 세부적으로 관리하면서 보안을 유지해야 합니다.

  • 비밀번호를 안전하게 관리해야 합니다. sudo 사용 시에는 비밀번호를 입력하여 작업을 실행하게 됩니다. 이 비밀번호는 사용자 계정에 연결되어 있으므로, 비밀번호 관리를 잘 해야 합니다. 강력한 비밀번호를 사용하고, 정기적으로 변경하며, 기록을 최소화하여 비밀번호 노출을 예방하는 것이 좋습니다.
  • 올바른 권한 설정이 되지 않았을 때 에러가 발생할 수 있습니다. sudo 설정을 완료한 후 권한 문제로 인해 명령이 실행되지 않는 경우가 있습니다. 이 경우 /etc/sudoers 파일에서 해당 사용자의 권한을 확인하고, 필요한 변경 사항을 적용해야 합니다. 특히 권한 설정 시, 문법 오류나 오탈자를 주의깊게 살펴보는 것이 필요합니다. 또한, NOPASSWD 옵션을 사용할 때 주의할 점은 보안 위험이 발생할 수 있다는 것입니다. 이를 적절하게 이해하고 사용하는 것이 중요합니다.
  • 사용자 이름 변경 또는 삭제시 이 내용을 적절하게 관리해야 합니다. 시스템 관리 중 사용자 이름이 변경되거나 삭제될 경우, sudo 설정도 업데이트해 주어야 합니다. /etc/sudoers 파일에서 해당 사용자의 설정을 수정하거나 삭제하는 것을 잊지 마십시오.

관련 글

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

Leave a Comment