리눅스를 처음 접하는 사용자(특히 우분투 사용자)라면 언젠가 반드시 Sudo 명령어를 접하게 됩니다. 많은 사용자가 'permission denied(권한 거부)' 메시지를 넘기기 위한 용도로만 Sudo를 사용하지만, 사실 Sudo는 그보다 훨씬 다양하고 강력한 기능을 제공합니다.
Sudo란 무엇인가?
Sudo에 대한 흔한 오해 중 하나는 '일반 사용자에게 root 권한을 부여하기 위해서만 사용된다'는 것입니다. 실제로 Sudo 명령어는 모든 사용자의 권한으로 명령을 실행할 수 있게 해주며, 별도 지정이 없으면 기본적으로 root(슈퍼유저) 권한으로 실행됩니다.
사용자에게 Sudo 권한 부여하기
우분투 사용자는 Sudo 명령어를 당연하게 사용할 수 있다고 생각하는 경우가 많습니다. 설치 과정에서 기본 사용자가 자동으로 생성되고, 우분투의 기본 사용자에게는 항상 Sudo 권한이 부여되기 때문입니다. 하지만 다른 배포판을 사용하거나 우분투에 새로운 사용자를 추가했다면, 해당 사용자에게 Sudo 실행 권한을 직접 부여해야 합니다.
Sudo 권한은 시스템 관리자 등 극소수의 사용자에게만 부여해야 합니다. 보안 원칙상 각 사용자에게는 업무 수행에 필요한 최소한의 권한만 주는 것이 좋습니다.
사용자에게 Sudo 권한을 부여하는 방법은 간단합니다. 해당 사용자를 sudo 그룹에 추가하면 됩니다. 사용자를 새로 생성할 때는 다음 명령어를 사용하세요:
sudo useradd -m -G sudo <사용자명>
위 명령어는 홈 디렉터리와 함께 사용자를 생성하고, 동시에 sudo 그룹에 추가합니다. 이미 존재하는 사용자를 sudo 그룹에 추가하려면 다음 명령어를 사용합니다:
sudo usermod -a -G sudo <사용자명>
Sudo 입력을 깜빡했을 때 유용한 꿀팁
숙련된 리눅스 전문가들이 즐겨 쓰는 터미널 요령 중 하나입니다. 'permission denied' 메시지가 나왔을 때, 명령어가 길다면 위쪽 화살표로 히스토리를 불러와 앞에 Sudo를 붙이거나 처음부터 다시 입력할 수도 있습니다. 하지만 더 간단한 방법이 있습니다. 아래 명령어 하나로 직전에 실행했던 명령을 Sudo 권한으로 다시 실행할 수 있습니다:
sudo !!
Sudo로 root 계정 전환하기
Su 명령어는 하나의 사용자 계정에서 다른 계정으로 전환할 때 사용됩니다. Su 명령어를 단독으로 실행하면 슈퍼유저(root) 계정으로 전환됩니다. 따라서 Sudo를 이용해 슈퍼유저 계정으로 전환하려면 다음과 같이 입력하면 됩니다:
sudo su
Sudo 명령어 백그라운드에서 실행하기
슈퍼유저 권한이 필요한 명령어를 백그라운드에서 실행하고 싶다면 -b 옵션과 함께 Sudo 명령어를 사용하면 됩니다:
sudo -b <명령어>
단, 실행하려는 명령어가 사용자 입력을 필요로 하는 경우에는 이 방법이 작동하지 않으니 주의하세요.
백그라운드 실행의 또 다른 방법은 명령어 끝에 앰퍼샌드(&)를 붙이는 것입니다:
sudo <명령어> &
Sudo 권한으로 파일 편집하기
슈퍼유저 권한으로 파일을 편집하는 가장 일반적인 방법은 GNU nano 같은 편집기를 Sudo와 함께 실행하는 것입니다:
sudo nano <파일명>
또는 다음과 같은 구문을 사용할 수도 있습니다:
sudo -e <파일명>
Sudo로 다른 사용자 권한으로 명령 실행하기
Sudo 명령어는 다른 사용자의 권한으로 명령을 실행할 때도 활용할 수 있습니다. 예를 들어 'john'이라는 계정으로 로그인한 상태에서 'terry' 권한으로 명령을 실행하려면 다음과 같이 입력합니다:
sudo -u terry <명령어>
직접 확인해 보고 싶다면 'test'라는 새 사용자를 만들고 아래 whoami 명령어를 실행해 보세요. 현재 실행 중인 사용자 이름이 출력됩니다:
sudo -u test whoami
Sudo 인증 유효 기간 연장하기
Sudo로 명령어를 실행하면 비밀번호를 입력하라는 메시지가 표시됩니다. 이후 일정 기간 동안은 비밀번호 없이 Sudo로 다른 명령어를 계속 실행할 수 있습니다. 이 유효 기간을 미리 연장하고 싶다면 다음 명령어를 실행하세요:
sudo -v
Sudo에 대해 더 알아보기
Sudo는 단순히 슈퍼유저 권한으로 명령어를 실행하는 것 이상의 강력한 도구입니다. 터미널에서 man sudo 명령어로 매뉴얼 페이지를 열어보면, 위에서 소개한 것 외에도 다양한 옵션과 활용법을 확인할 수 있습니다. Sudo를 잘 활용하면 리눅스 시스템 관리가 한층 더 편리해질 것입니다.