JooTC

리눅스 sudo 명령어 패스워드 입력 과정 생략하기

sudo 명령어는 현재 로그인 된 사용자가 루트 권한(root)을 획득하여 슈퍼유저 권한이 필요한 특정 동작을 처리할 수 있도록 해줍니다.

물론 sudo 명령어를 어느 사용자이던지 사용할 수 있는 것은 아닙니다. 보통 sudoers 파일(/etc/sudoers)에 등록된 설정에 따라 sudo 명령을 사용하여 권한을 취득할 수 있는 계정을 지정합니다.

/etc/sudoers 파일에는 다음과 같이 지정되어 있을 것입니다.

## Next comes the main part: which users can run what software on 
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
##  user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere 
root    ALL=(ALL)   ALL
lee    ALL=(ALL)   ALL

lee 라는 계정은 sudo 명령어를 사용하도록 허용하여 root 권한을 빌릴 수 있도록 설정되어 있습니다. 만약 이 부분에 현재 계정에 대한 내용이 없을 경우 sudo 명령어를 사용할 수 없게 됩니다.

이제 lee 계정으로 sudo 명령어를 사용해보겠습니다.

[lee@myServer ~]$ sudo /root/adminscript.sh
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for lee:

이 때 일반적인 경우 lee 계정의 패스워드를 묻게 됩니다.

리눅스 sudo 패스워드 입력 건너뛰기

로그인 시 특정 명령어를 지속적으로 실행해야 할 때 패스워드를 매 순간 마다 입력하는 것이 번거로워질 수 있습니다.

따라서 전체 또는 특정 명령어를 입력할 때 이러한 패스워드를 입력하는 과정을 생략하도록 하겠습니다.

주의: 아래 방법들을 사용하면 보안상 안전하지 않을 수 있으므로 필요한 경우에만 최소한으로 사용해주세요.

첫 번째 방법 패스워드를 미리 입력하는 것입니다. 사용법은 다음과 같습니다.

$ echo '[Password]' | sudo -kS [Command]

간단히 sudo 명령어에 k (reset-timestamp) 그리고 대문자 S (stdin) 옵션을 붙입니다. 표준 입력을 사용하여 암호를 입력받게 됩니다. k 옵션은 일정 시간 동안 암호를 입력하지 않아도 되는 상태를 초기화하여 예기치 못한 입력 문제를 방지합니다.

만약 adminscript 스크립트 파일을 lee 유저(패스워드 p@ssw0rd)가 사용할 경우 다음과 같이 입력합니다.

$ echo 'p@ssw0rd' | sudo -kS /root/scripts/adminscript.sh

그러나 이 방법은 명령어 히스토리(hitsory)에 패스워드가 그대로 남아버리기 때문에 보안 상 권장되지 않습니다.

두 번째 방법패스워드 프롬프트가 나타나지 않도록 설정하여 암호 입력을 무시하는 방법입니다. 이 과정은 root 계정으로 전환한 후에 진행합니다.

여기서는 앞서말했던 /etc/sudoers 파일을 수정해야 합니다. 직접 수정하는 것도 좋지만 안전을 위해 visudo 명령어를 실행하여 sudoers 파일 편집기를 실행합니다.

[root@myServer ~]# visudo

파일의 하단에 다음과 같이 내용을 추가합니다.

lee  ALL=(ALL) NOPASSWD:/root/script/adminscript.sh

sudoers의 문법은 보통 다음과 같이 사용됩니다.

[계정명] [허용되는 장치]=([전환 가능한 계정]) [옵션-규칙]:[명령어1], [명령어2]…

간단히 말하자면 lee 계정은 모든 장치에서 모든 계정의 권한을 취득할 수 있으며 다음 명령어(/root/script/adminscript.sh)를 실행할 때에는 패스워드를 묻지 않도록 합니다.

만약 특정 사용자의 권한에 대해서만 허용할 경우에는 괄호 안에 유저명을 입력해야 합니다. 괄호가 존재하지 않거나 (ALL)인 경우 모든 유저의 권한을 취득할 수 있도록 합니다.

lee  ALL=(user1, user2, user3) NOPASSWD:/root/script/adminscript.sh

패스워드를 묻지 않을 명령어를 모두 지정하려면 명령어 대신 ALL을 붙입니다.

lee  ALL=(ALL) NOPASSWD:ALL

만약 여러 명령어를 지정하고 싶은 경우에는 콤마(,)로 구분지어 작성합니다.

lee  ALL=NOPASSWD:/root/script/adminscript.sh, passwd, yum update

이렇게 원하는 명령어를 작성한 후 저장하고 편집기에서 빠져나오면 다른 유저가 다시 로그인 하는 시점에 규칙이 적용됩니다.

구독
알림
guest

0 Comments
Inline Feedbacks
모든 댓글 보기
0
이 포스트에 대한 의견을 남겨주세요!x