본문 바로가기

os/linux

[ Linux ] 리눅스 사용자 계정 전환 방법

[ Linux ] 리눅스 사용자 계정 전환 방법

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 리눅스를 사용하다가 계정을 전환하는 방법에 대해서 알아보도록 하겠습니다.

 

사용자 계정 전환 방법을 모르거나 기억이 안나는 경우가 더러 있기 때문에 같이 살펴보도록 하시죠.

 

linux-logo
리눅스 로고


su 명령어와 sudo 명령어

 

사용자 전환이 필요할 때 사용할 수 있는 명령어는 su (switch user)와 sudo 명령어가 있습니다.

 

su 명령어는 말 그대로 유저를 전환하는 명령어이고

 

sudo 명령어는 관리자 권한을 빌려오는 명령어입니다.


su 명령어

 

su 명령어의 구조를 살펴봅시다.

 

su [-] [user-name]

 

su 명령어를 사용하면 로그아웃을 하지 않고도 사용자를 전환할 수 있습니다.

 

[ - ] 대시 옵션을 사용하면 전환하려는 사용자 계정의 환경 설정을 읽어오고

 

사용하지 않으면 현재 사용자의 환경 설정을 그대로 유지합니다.

 

su 명령어 뒤에 아무것도 입력하지 않고 실행하면 자동으로 root 계정으로 전환을 시도합니다.

 

아래 예제를 보면서 사용법을 익혀봅시다.

 

** case.1 su 만 입력할 경우 **

symxsym@symxsym-VirtualBox:~$ su
암호:
root@symxsym-VirtualBox:/home/symxsym# pwd
/home/symxsym

** case.2 su - 입력할 경우 **

symxsym@symxsym-VirtualBox:~$ su -
암호:
root@symxsym-VirtualBox:~# pwd
/root

** case.3 su 다른 사용자 계정 입력할 경우 **

symxsym@symxsym-VirtualBox:~$ su test
암호:
test@symxsym-VirtualBox:/home/symxsym$ pwd
/home/symxsym

**  case.4 su - 다른 사용자 계정 입력할 경우 **

symxsym@symxsym-VirtualBox:~$ su - test
암호:
test@symxsym-VirtualBox:~$ pwd
/home/test

 

예제의 case.1을 보면 su 만 입력하였기 때문에 root 계정으로 전환을 시도합니다.

 

case.2는 [ - ]대시 옵션만 사용하기 때문에 root 계정으로 전환을 시도하면서 환경 설정 또한 바뀝니다.

 

pwd 명령어의 결과를 보면 root의 홈으로 바뀐 것을 확인할 수 있습니다.

 

case.3에서는 su 다른 사용자 계정을 입력해서 해당 계정으로 전환되지만 환경 설정은 바뀌지 않습니다.

 

case.4는 대시옵션과 다른 사용자 계정을 입력해서 계정이 전환되고 환경 설정 또한 바뀌게 됩니다.


관리자 권한이 필요해서 su 명령어를 사용해 root 계정으로 전환해서 시스템을 수정하는 방법은

 

보안적인 측면에서 좋지 않은 행위입니다.

 

root 계정의 비밀번호를 알고 있는 누군가가 악의적인 의도를 가지고 시스템에 피해를 입힐 수도 있기 때문입니다.

 

그렇기 때문에 su 명령어 대신 sudo 명령어로 관리자 권한을 빌려오는 방식을 추천드립니다.


sudo 명령어

 

sudo 명령어는 다른 사용자의 권한으로 명령어를 실행할 수 있는 명령어입니다.

 

명령어 사용법입니다.

 

sudo [option] [user-name] command

 

sudo를 실행하기 위해서는 옵션에 들어가는 사용자 계정의 비밀번호를 알아야 하고

 

옵션에 들어가는 사용자 계정이 /etc/sudoer 파일에 등록되어 있어야 합니다.

 

sudo 명령어에 사용자 계정을 입력하지 않으면 root 사용자의 권한으로 명령어가 실행되고

 

-i 옵션을 사용하면 su 명령어에서 [ - ] 대시 옵션과 같이 옵션에 입력한 사용자의 환경 설정에서 명령어를 수행합니다.

 

예제를 보면서 sudo 명령어의 사용법을 익혀봅시다.

 

** sudo 명령어로 관리자 권한 빌려오기 **
symxsym@symxsym-VirtualBox:~$ whoami

symxsym
symxsym@symxsym-VirtualBox:~$ sudo whoami
root

symxsym@symxsym-VirtualBox:~$ cat /etc/sudoers
cat: /etc/sudoers: 허가 거부
symxsym@symxsym-VirtualBox:~$ sudo cat /etc/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.
---------------------- 생략 ----------------------
# 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

** sudo -i 명령어로 관리자 권한 및 환경 설정 빌려오기 **
symxsym@symxsym-VirtualBox:~$ sudo mkdir folder1
symxsym@symxsym-VirtualBox:~$ sudo -i mkdir folder2
symxsym@symxsym-VirtualBox:~$ sudo find / -name "folder?" -ls
  1189813      4 drwxr-xr-x   2 root     root         4096  1월 31 22:31 /root/folder2
   532734      4 drwxr-xr-x   2 root     root         4096  1월 31 22:31 /home/symxsym/folder1

 

sudo 명령어를 사용해서 root 계정의 권한을 빌려와서 /etc/sudoers의 내용을 확인하기도 하고

 

디렉터리를 만드는 예제에서는 sudo -i 명령어를 사용하면 환경 설정까지 가져오는 것을 확인할 수 있었습니다.


/etc/sudoers

 

사용자가 sudo 명령어를 사용할 수 있는 권한을 부여할 수 있는 파일입니다.

 

앞선 예제에서도 /etc/sudoers의 내용을 살펴보았는데요.  그 내용 중 아래와 같은 문구를 살펴봅시다.

 

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

위 문구에서 %는 그룹을 의미하고, sudo라는 그룹에 속해있는 사용자에게  sudo 명령어 사용을 허용한다는 뜻입니다.

 

예제를 통해 sudo 명령어 사용 가능 여부를 확인해 봅시다.

 

** id 명령어로 계정의 그룹 확인 **
symxsym@symxsym-VirtualBox:~$ id symxsym

uid=1000(symxsym) gid=1000(symxsym) 그룹들=1000(symxsym),27(sudo)
symxsym@symxsym-VirtualBox:~$ id test
uid=1001(test) gid=1001(test) 그룹들=1001(test)

**  symxsym 계정은 sudo 그룹에 속해있고 test 계정은 속해있지 않습니다.**

** 각 계정으로 sudo 명령어 사용 **
symxsym@symxsym-VirtualBox:~$ whoami
symxsym
symxsym@symxsym-VirtualBox:~$ sudo whoami
root
symxsym@symxsym-VirtualBox:~$ su - test
암호:
test@symxsym-VirtualBox:~$ whoami
test
test@symxsym-VirtualBox:~$ sudo whoami
[sudo] test 암호:
test은(는) sudoers 설정 파일에 없습니다.  이 시도를 보고합니다.

 

관리자 권한을 사용했던 로그를 확인하기 위해서는 /var/log/secure 또는 /var/log/auth.log의 내용을 확인해 보면

 

가장 아랫줄부터 최근에 관리자 권한을 사용한 이력을 확인할 수 있습니다.


오늘은 리눅스 사용자 계정 전환 방법에 대해서 알아보았습니다.

 

제가 정리한 내용이 여러분들에게 조금이라도 도움이 된다면 좋겠습니다.

 

최대한 양질의 정보를 제공해 드리기 위해 노력 중이니 관심 있게 봐주세요.

 

감사합니다.

반응형