[linux] 관리자 권한 전환

Windows에서 최고 관리자가 Administrator였다면, 리눅스에서는 root입니다.
보안상의 이유로 root로 직접 로그인하는 것은 권장되지 않고,
일반 사용자로 로그인 한 뒤, 필요시에 root 권한으로 작업하는 것을 권장합니다.

sudo

일반 사용자가 root 권한으로 명령어를 실행하고자 할 떄 사용하는 명령어입니다.

1
sudo cat /etc/shadow

당연히 누구나 사용할 순 없고, 허가된 사용자만이 사용 가능한 명령어입니다.
이를 확인하기 위해선 /etc/sudoers 파일을 확인해야 합니다.

현재 우분투를 사용하고 있으므로, 우분투를 기점으로 해당 파일을 열어봤을때

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

부분을 발견할 수 있습니다.

보다시피 sudo 그룹에 해당하는 멤버들은 모든 명령어를 사용할 수 있다고 명시되어 있습니다.
(기본적으로 관리자 계정으로 등록된 사용자는 sudo 그룹에 소속되어 있음)

그럼 유저를 하나 만들고, sudo 명령어를 사용 가능하도록 만들어보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 먼저 사용자 추가를 위해 root 계정으로 변경합니다. (su 명령어는 아래서 설명)
> su -

# user1 추가 및 패스워드 설정
> useradd -m user1
> passwd user1

> su - user1
> sudo cat /etc/shadow
[sudo] password for user1:
user1 is not in the sudoers file. This incident will be reported.
# sudo 명령어를 실행할 수 없다.

# user1에 sudo 그룹을 추가
> su -
> usermod -G sudo user1

# 다시 실행
> su - user1
> sudo cat /etc/shadow
[sudo] password for user1:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
.....
# 출력이 잘 된다!

sudo 명령어를 통해 root 권한으로 명령어를 실행하고 나면 다시 일반 사용자 권한으로 돌아오게 됩니다.
sudo 명령어 실행 시 입력한 암호는 5분 동안 유지됩니다! (5분간 암호를 재입력하지 않아도 됨)

su

sudo 처럼 잠시 관리자 권한을 빌려오는 것이 아니라, 아예 관리자 권한으로 전환할 때 사용합니다.

1
2
3
> su - 
암호 :
root@:~#

- 옵션을 주어야 root 사용자의 환경변수까지 다 읽어오게 됩니다.
입력하지 않을 경우 환경변수가 없어 명령어를 찾지 못하는 현상이 발생할 수도 있습니다.

su 뒤에 사용자명을 입력하여 root가 아닌 다른 사용자로 전환할 수도 있습니다.

1
2
3
> su - user2
암호 :
user2@:~$