리눅스 명령어 · 5 min read · Dec 25, 2025
우분투에서 sudo 이해하기 위한 초보자 가이드

리눅스 명령줄에서 작업할 때 ‘권한 거부‘ 오류를 경험한 적이 있나요? 아마도 루트 권한이 필요한 작업을 수행하려고 했기 때문일 것입니다. 예를 들어, 아래 스크린샷은 시스템 디렉토리 중 하나에 이진 파일을 복사하려고 할 때 발생한 오류를 보여줍니다:

이 문제의 해결책은 무엇일까요? 간단합니다. sudo 명령어를 사용하세요.

명령을 실행하는 사용자에게 로그인 비밀번호를 입력하라는 메시지가 표시됩니다. 올바른 비밀번호가 입력되면 작업이 성공적으로 수행됩니다.
sudo는 리눅스에서 명령줄 작업을 하는 모든 사람에게 반드시 알아야 할 명령어이지만, 이 명령어를 보다 책임감 있고 효과적으로 사용하기 위해 알아야 할 여러 관련(및 심층) 세부 사항이 있습니다. 그리고 바로 그 점에 대해 이 기사에서 논의할 것입니다.
하지만 우리가 진행하기 전에, 이 기사에서 언급된 모든 명령과 지침은 Bash 셸이 있는 우분투에서 테스트되었다는 점을 언급할 가치가 있습니다.sudo란 무엇인가요?
대부분의 여러분이 이미 알고 있을 sudo 명령어는 권한 상승(보통 루트로)된 상태에서 명령을 실행하는 데 사용됩니다. 이 예시는 위의 소개 섹션에서 이미 논의했습니다. 그러나 원하신다면 sudo를 사용하여 다른(비루트) 사용자로 명령을 실행할 수 있습니다.
이는 도구가 제공하는 -u 명령줄 옵션을 통해 달성됩니다. 예를 들어, 아래에 보여지는 예에서 저는 (himanshu) 다른 사용자의 (howtoforge) 홈 디렉토리에서 파일 이름을 바꾸려고 했지만 ‘권한 거부‘ 오류가 발생했습니다. 그리고 ‘sudo -u howtoforge’와 함께 같은 ‘mv’ 명령을 시도했더니 명령이 성공적으로 수행되었습니다:

모든 사용자가 sudo를 사용할 수 있나요?
아니요. 사용자가 sudo를 사용할 수 있으려면 해당 사용자에 대한 항목이 /etc/sudoers 파일에 있어야 합니다. 다음 단락은 우분투 웹사이트에서 가져온 것으로, 이를 더 명확하게 설명합니다:
/etc/sudoers 파일은 어떤 사용자가 어떤 명령을 어떤 머신에서 실행할 수 있는지를 제어하며, 특정 명령에 대해 비밀번호가 필요한지 여부와 같은 특별한 사항도 제어할 수 있습니다. 이 파일은 별칭(기본적으로 변수)과 사용자 사양(누가 무엇을 실행할 수 있는지를 제어함)으로 구성됩니다.우분투를 사용하고 있다면 사용자가 sudo 명령을 실행할 수 있도록 하는 것은 쉽습니다. 해당 사용자 계정을 ‘관리자’ 유형으로 설정하면 됩니다. 이는 시스템 설정… -> 사용자 계정으로 이동하여 수행할 수 있습니다.

창 잠금 해제:

그런 다음 계정 유형을 변경하려는 사용자를 선택하고, 유형을 ‘관리자’로 변경합니다.

그러나 우분투가 아닌 경우 또는 배포판이 이 기능을 제공하지 않는 경우, /etc/sudoers 파일을 수동으로 편집하여 변경할 수 있습니다. 해당 파일에 다음 줄을 추가해야 합니다:
[user] ALL=(ALL:ALL) ALL말할 필요도 없이, [user]는 sudo 권한을 부여할 계정의 사용자 이름으로 대체되어야 합니다. 여기서 언급할 중요한 점은 이 파일을 편집하는 공식적으로 권장되는 방법이 visudo 명령을 통해 이루어진다는 것입니다. 다음 명령을 실행하기만 하면 됩니다:
sudo visudo왜 그런지에 대한 아이디어를 드리기 위해, visudo 매뉴얼의 발췌문을 소개합니다:
visudo는 sudoers 파일을 안전한 방식으로 편집합니다. visudo는 여러 동시 편집에 대해 sudoers 파일을 잠그고, 기본적인 유효성 검사를 제공하며, 구문 오류를 확인합니다. 현재 sudoers 파일이 편집 중이라면 나중에 다시 시도하라는 메시지가 표시됩니다.visudo에 대한 더 많은 정보는 여기로 가세요.
sudo 세션이란?
sudo 명령을 자주 사용하는 경우, 비밀번호를 한 번 성공적으로 입력한 후 여러 sudo 명령을 비밀번호 입력 없이 실행할 수 있다는 것을 관찰했을 것입니다. 그러나 시간이 지나면 sudo 명령이 다시 비밀번호를 요청합니다.
이 동작은 사용자가 실행하는 sudo 기반 명령의 수와는 관계가 없고, 대신 시간에 따라 달라집니다. 예, 기본적으로 sudo는 사용자가 한 번 비밀번호를 입력한 후 15분 동안 비밀번호를 요청하지 않습니다. 이 15분이 지나면 다시 비밀번호를 입력하라는 메시지가 표시됩니다.
그러나 원하신다면 이 동작을 변경할 수 있습니다. 이를 위해 다음 명령을 사용하여 /etc/sudoers 파일을 엽니다:
sudo visudo그리고 다음과 같은 줄로 이동합니다:
Defaults env_reset
그리고 줄 끝에 다음 변수(아래 굵게 표시된)를 추가합니다:
Defaults env_reset,timestamp_timeout=[new-value][new-value] 필드는 sudo 세션이 지속되기를 원하는 분의 분으로 대체되어야 합니다. 예를 들어, 저는 40이라는 값을 사용했습니다.

매번 sudo 명령을 사용할 때마다 비밀번호를 입력하라는 메시지를 받고 싶다면, 이 경우 이 변수에 ‘0’ 값을 할당할 수 있습니다. 그리고 sudo 세션이 절대 만료되지 않기를 원하는 분은 ‘-1’ 값을 할당할 수 있습니다.
timestamp_timeout을 ‘-1’로 설정하는 것은 강력히 권장되지 않습니다.
sudo 비밀번호
여러분이 관찰했듯이, sudo가 비밀번호를 요청할 때 비밀번호를 입력하기 시작하면 아무것도 표시되지 않습니다 - 일반적으로 보이는 별표조차도 없습니다. 일반적으로 큰 문제는 아니지만, 일부 사용자는 어떤 이유로든 별표가 표시되기를 원할 수 있습니다.
좋은 점은 이것이 가능하고 꽤 쉽게 할 수 있다는 것입니다. /etc/sudoers 파일에서 다음 줄을 변경하기만 하면 됩니다:
Defaults env_reset다음과 같이:
Defaults env_reset,pwfeedback그리고 파일을 저장합니다.
이제 sudo 비밀번호를 입력할 때마다 별표가 표시됩니다.

몇 가지 중요한 sudo 명령줄 옵션
-u 명령줄 옵션(우리가 이미 이 튜토리얼의 시작 부분에서 논의한 것) 외에도 언급할 가치가 있는 몇 가지 다른 중요한 sudo 명령줄 옵션이 있습니다. 이 섹션에서는 그 중 일부를 논의할 것입니다.
-k 옵션
사용자가 비밀번호를 입력한 후 sudo 기반 명령을 실행한 경우를 고려해 보세요. 이제 아시다시피, 기본적으로 sudo 세션은 15분 동안 활성 상태로 유지됩니다. 이 세션 중에 누군가에게 터미널에 대한 액세스를 제공해야 하지만, sudo를 사용할 수 없도록 하려면 어떻게 해야 할까요?
다행히도, 사용자가 sudo 권한을 취소할 수 있는 명령줄 옵션 -k가 있습니다. sudo 매뉴얼 페이지에서 이 옵션에 대해 다음과 같이 설명합니다:
-k, --reset-timestamp
명령 없이 사용하면 사용자의 캐시된 자격 증명을 무효화합니다. 즉, 다음 번 sudo가 실행될 때 비밀번호가 필요합니다. 이 옵션은 비밀번호를 요구하지 않으며, 사용자가 .logout 파일에서 sudo 권한을 취소할 수 있도록 추가되었습니다.
명령이나 비밀번호가 필요할 수 있는 옵션과 함께 사용하면 이 옵션은 sudo가 사용자의 캐시된 자격 증명을 무시하게 만듭니다. 결과적으로, sudo는 비밀번호를 요청하고(보안 정책에 의해 요구되는 경우) 사용자의 캐시된 자격 증명을 업데이트하지 않습니다.-s 옵션
작업에 루트 권한이 필요한 많은 명령을 실행해야 하는 경우가 있을 수 있으며, 매번 sudo 비밀번호를 입력하고 싶지 않을 수 있습니다. 또한 /etc/sudoers 파일을 수정하여 sudo 세션 타임아웃 제한을 조정하고 싶지 않을 수도 있습니다.
이 경우, sudo 명령의 -s 명령줄 옵션을 사용할 수 있습니다. sudo 매뉴얼 페이지에서 다음과 같이 설명합니다:
-s, --shell
SHELL 환경 변수가 설정되어 있으면 해당 쉘을 실행하거나 호출하는 사용자의 비밀번호 데이터베이스 항목에 의해 지정된 쉘을 실행합니다. 명령이 지정되면 쉘의 -c 옵션을 통해 실행을 위해 쉘에 전달됩니다. 명령이 지정되지 않으면 대화형 쉘이 실행됩니다.기본적으로 이 명령줄 옵션이 하는 일은:
- 새로운 쉘을 시작합니다 - 어떤 쉘인지는 SHELL 환경 변수가 참조됩니다. $SHELL이 비어 있으면 /etc/passwd 파일에 정의된 쉘이 선택됩니다.
- -s 옵션과 함께 명령 이름을 전달하는 경우(예: sudo -s whoami), 실제로 실행되는 명령은: sudo /bin/bash -c whoami.입니다.
- 다른 명령을 실행하려고 하지 않는 경우(즉, 단순히 sudo -s를 실행하려는 경우) 루트 권한이 있는 대화형 쉘을 얻습니다.
여기서 기억해야 할 중요한 점은 -s 명령줄 옵션이 루트 권한이 있는 쉘을 제공하지만 루트 환경은 얻지 못한다는 것입니다 - 여러분의 .bashrc가 소스됩니다. 즉, 예를 들어 sudo -s가 실행되는 새로운 쉘에서 whoami 명령을 실행하면 여전히 여러분의 사용자 이름이 반환되고 ‘root’가 반환되지 않습니다.
-i 옵션
-i 옵션은 우리가 방금 논의한 -s 옵션과 유사합니다. 그러나 몇 가지 차이점이 있습니다. 주요 차이점 중 하나는 -i가 루트 환경도 제공한다는 것입니다. 즉, 사용자의 .bashrc는 무시됩니다. 이는 루트로 로그인하지 않고도 루트가 되는 것과 같습니다. 게다가 루트 사용자 비밀번호를 입력할 필요도 없습니다.
*중요: su 명령이 존재하여 사용자 전환도 가능하다는 점을 유의하시기 바랍니다(기본적으로 루트가 되도록 허용합니다). 이 명령은 ‘root’ 비밀번호를 입력해야 합니다. 이를 피하려면 sudo로 실행할 수도 있습니다(‘sudo su’); 이 경우 로그인 비밀번호만 입력하면 됩니다. 그러나 ‘su’와 ‘sudo su’는 몇 가지 기본적인 차이가 있으며, 이를 이해하고 ‘sudo -i’가 이들과 어떻게 비교되는지 더 알고 싶다면 여기로 가세요.*
결론
이제까지 sudo의 기본 개념과 기본 동작을 조정하는 방법에 대한 아이디어를 얻으셨기를 바랍니다. 여기에서 설명한 /etc/sudoers 조정을 시도해 보시고, sudo 명령에 대한 더 많은 통찰력을 얻기 위해 포럼 토론(마지막 단락에 링크됨)을 확인해 보세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.