⛔️ 주의 이 내용은 기록만을 위해 작성되었으며, 보안상 취약점을 가지기때문에 회사에서는 사용하지 않길 권고합니다. 이 게시물을 따라 작업한 뒤 발생하는 모든 문제에 대한 책임 및 문제발생 시 귀책 사유는 작업자 본인에게 있으며, 이 블로그 및 필자는 어떠한 책임도 없음을 명시합니다.
사용자에게 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를 입력하지 않고 사용자 권한 외의 영역에 폴더를 생성할 때에 권한 문제가 여전히 존재합니다.
'TIPS' 카테고리의 다른 글
[TIPS] gvm으로 Golang 버전 관리하기: go 설치, GOPATH 설정 (1) | 2023.04.07 |
---|---|
[TIPS] 코드스테이츠 디너클럽 후기 (0) | 2021.08.11 |
[TIPS] macOS git status 한글 깨짐 현상 해결하기 (0) | 2021.03.02 |
[TIPS] GitHub 새로운 기능, gh CLI 사용하기 (0) | 2020.09.21 |
[TIPS] JEST - 제스트, 테스트 All-in-one 패키지 (0) | 2020.09.12 |