리눅스

sudo(super user do) 사용법

엔지니어-여리 2023. 10. 3. 07:41
반응형

리눅스를 사용하다보면 필요에 의해서 특정 계정에 높은 권한을 줘야할 때가 있다.

구글링을 조금 하다보면 /etc/sudoers 파일에 특정 라인을 추가해주면 된다고 하는데,

 

어떨 때는 잘 되고 어떨 때는 잘 되지 않는 경우가 있다. 

이번 글에서는 sudo의 사용법과 트러블 슈팅 경험을 공유하고자 한다.

 

sudo 설정을 해보자.

sudoers 파일의 기본 구성은 다음과 같다. (기본적으로 sudoers 파일은 읽기전용이다)

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

 

sudo 권한을 넣기 위해서는 20번째 줄 아래에 

# User privilege specification
root    ALL=(ALL:ALL) ALL

 

사용자명 ALL=(ALL:ALL) ALL 형식으로 추가하면 된다.

# User privilege specification
root    ALL=(ALL:ALL) ALL
ubuntu    ALL=(ALL:ALL) ALL # 원하는 사용자 추가

 

이 설정 이후에는 `ubuntu` 계정에서 sudo 명령을 입력하게 되면 다음과 같은 입력창이 생성된다

ubuntu@jupyter-hub:~$ sudo su
[sudo] password for ubuntu:

 

패스워드를 입력하면, `root` 사용자로 로그인할 수 있다.

 

패스워드 없이 사용해보자 

 

필요에 따라 sudo 명령 사용시 패스워드 입력 없이 사용하는 방법을 시도해 봅시다.

sudoers 파일에 아래 라인을 추가해줍니다.

# User privilege specification
root    ALL=(ALL:ALL) ALL
ubuntu  ALL=(ALL:ALL) ALL
ubuntu ALL=NOPASSWD: ALL

 

 

문제 발생

sudoers 파일을 저장하고, sudo 명령어를 사용해보면 패스워드를 입력해야한다고 한다.

 

뭐가 잘못 되었을까?

찬찬히 확인해보면, `NOPASSWD` 라인은 반드시 %sudo ALL=(ALL:ALL) ALL 라인 아래에 있어야만 정상 작동하는 것을 확인할 수 있다.

 

다시 NOPASSWD 라인을 설정해주고 sudoers 파일을 확인해보면 다음과 같다.

 

# User privilege specification
root    ALL=(ALL:ALL) ALL
ubuntu  ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
ubuntu ALL=NOPASSWD: ALL

 

이제는 sudo nopasswd 기능이 잘 적용된 것을 확인할 수 있다.

ubuntu@jupyter-hub:~$ sudo su
root@jupyter-hub:/home/ubuntu#

 

한 줄요약

NOPASSWD 라인의 위치가 중요함 

반응형