TIPS

[TIPS] Linux/macOS 터미널 비밀번호 없애기

Gray Park 2023. 4. 11. 11:41
728x90
반응형

⛔️ 주의 이 내용은 기록만을 위해 작성되었으며, 보안상 취약점을 가지기때문에 회사에서는 사용하지 않길 권고합니다. 이 게시물을 따라 작업한 뒤 발생하는 모든 문제에 대한 책임 및 문제발생 시 귀책 사유는 작업자 본인에게 있으며, 이 블로그 및 필자는 어떠한 책임도 없음을 명시합니다.

 

사용자에게 sudo 권한 부여 및 password 없애기

위 주의사항에도 작성했지만, 이 부분은 충분히 문제가 될 수 있습니다. 특히 귀찮다는 이유로 권한에 비밀번호를 없애는 일은 절대 없길 바랍니다.

 

저는 Shell script를 작성 중에, root 권한의 작업영역에 파일을 생성하는 일이 필요했습니다. (컨테이너에 올리기 위해) 이를 스크립트 레벨에서 해결해야 했는데, 쉘 스크립트에 비밀번호를 노출하는 일 없이 진행하길 원했습니다.

 

먼저 sudo 권한이 포함된 스크립트를 실행하면 어떻게되는지 살펴보겠습니다.

먼저 사용자 홈에 test.sh 를 생성해서 다음과 같은 내용을 작성해주었습니다.

#!/bin/sh
echo Hello
sudo echo World

그리고 사용자에게 실행권한을 주겠습니다.

명령어는 다음과 같습니다.

ls -l test.sh && ls -l test.sh

사용자에게만 읽기, 쓰기, 실행 권한이 생긴 걸 확인할 수 있습니다.

 

이제 해당 스크립트를 실행해보겠습니다. 명령어는 다음과 같습니다.

./test.sh

그러면 위 이미지처럼 에러가 나타납니다. (정확히는 Password 입력란이 나타납니다. 저는 Ctrl + C를 통해 종료 시그널을 보냈습니다.)

 

/etc/sudoers 편집

sudo 권한을 사용하는 스크립트를 실행하면서 password를 생략하는 작업을 진행하겠습니다.

 

다음 명령어를 통해 /etc/sudoers 파일을 열어줍니다. 이때 사용하는 명령어 visudo는 /etc/sudoers 파일에서 권고하는 내용을 따랐습니다.

sudo visudo -f /etc/sudoers

이때 열린 파일에서 다음 부분을 찾고, 아래에 현재 사용자에 대한 내용을 추가합니다. 현재 사용자는 whoami 명령어를 통해 확인할 수 있습니다.

#
# Sample /etc/sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# /// 중략 ///
#

# root and users in group wheel can run anything on any machine as any user
root		ALL = (ALL) ALL
%admin		ALL = (ALL) ALL
# 새롭게 추가
gyuhapark	ALL = (ALL) NOPASSWD: ALL

추가한 내용은 ${사용자 이름} ALL = (ALL) NOPASSWD: ALL 입니다. 저장하고 편집을 마치기 위해 esc -> :wq 입력 후 엔터키를 눌러줍니다.

 

새로운 터미널을 열고, 앞서 작성한 test.sh를 실행해보겠습니다.

이렇게하면 gyuhapark이라는 사용자가 shell script를 통해 sudo 권한을 비밀번호 없이 이용할 수 있게 됩니다. 그러나 사용자가 다른 사용자 또는 root 권한이 필요한 폴더, 파일 등을 생성, 수정, 삭제하기 위한 권한을 획득한 건 아닙니다.

단지 sudo 명령어를 사용할 때 비밀번호 없이 사용할 수 있도록 해준 것에 불과하기 때문에 위 이미지처럼 sudo를 입력하지 않고 사용자 권한 외의 영역에 폴더를 생성할 때에 권한 문제가 여전히 존재합니다.

728x90
반응형