System/Unix

su와 su - 명령어 차이

Attacker 2019. 5. 11. 17:15

su와 su - 명령어 차이

Ⅰ. SU 명령어란?

SU Substitute User의 줄임말로 현재 사용자를 로그아웃 하지 않고, 다른 사용자의 권한을 획득할 때 사용된다

일반적으로 패키지를 설치, 시스템 설정 파일 수정, 신규 사용자 추가 등과 같은 관리 작업을 수행하기 위해 사용자의 권한을 root로 변경하는데 이용된다.

 

 

Ⅱ. SU 명령어 사용법

1. su [변경하고자 하는 계정명]

[변경하고자 하는 계정명]의 권한을 임시로 빌려온 형태로, 환경변수를 일부만 가져온다. 즉, 기존 사용자 환경이 어느 정도 유지된 상태이므로 로그아웃(logout)은 할 수 없다.


ex) $ su root

 

ex) # logout

 

2. su - [변경하고자 하는 계정명]

SU 뒤에 오는 --l또는 --login과 동일한 명령어로, 해당 명령어를 이용하면 사용자의 환경변수 및 작업 디렉터리 영향을 미친다.

ex1) $ su - root

 

ex2) $ su -l root

 

ex3) $ su --login root

 

ex4) # logout

 

 

Ⅲ. SU SU - 명령어 비교

다음 표와 같이 ‘-‘의 유무의 차이는 환경변수작업 디렉터리에 영향을 준다.

구분 SU SU -
환경변수 TERM 변경 변경
HOME 변경 변경
SHELL 변경 변경
USER 변경 변경
LOGNAME 변경 변경
PATH 유지 Default 값
기타 유지 초기화
작업 디렉터리 유지 변경

 

1. PATH 환경변수 비교

1) SU root 명령어를 통한 실습

① (SU 명령어 사용 전) 일반 사용자의 PATH 환경변수 확인

 

② (SU 명령어 사용 후) root의 PATH 환경변수 확인

→ ①, ②번 실습을 통해 ‘SU’ 명령어 사용 시 PATH 환경변수가 변하지 않음을 확인함  

 

2) SU - root 명령어를 통한 실습

① (SU - 명령어 사용 전) 일반 사용자의 PATH 환경변수 확인

 

② (SU - 명령어 사용 후) root의 PATH 환경변수 확인

→ ①, ②번 실습을 통해 ‘SU -’ 명령어 사용 시 PATH 환경변수가 변경됨을 확인함

 

2. 기타 환경변수 비교

일반 사용자 계정(bhkim)으로 임의의 환경변수(hello=world)를 생성한 후, ‘SU’와 ‘SU -' 명령어를 이용하여 생성한 임의의 환경변수의 존재 여부를 확인할 것이다.

 

임의의 환경변수(hello=world) 생성

 

1) SU root 명령어를 통한 실습

① (SU 명령어 사용 전) 일반 사용자의 임의의 환경변수(hello) 확인


② (SU 명령어 사용 후) root의 임의의 환경변수(hello) 확인

 

→ ①, ②번 실습을 통해 ‘SU’ 명령어 사용 시 임의로 생성한 Hello 환경변수가 변하지 않음을 확인함

 

2) SU - root 명령어를 통한 실습

① (SU - 명령어 사용 전) 일반 사용자의 임의의 환경변수(hello) 확인

② (SU - 명령어 사용 후) root의 임의의 환경변수(hello) 확인

→ ①, ②번 실습을 통해 ‘SU -’ 명령어 사용 시 임의로 생성한 Hello 환경변수가 초기화됨을 확인함

 

3. 작업 디렉터리 경로 비교

일반 사용자 계정(bhkim)의 작업 디렉터리 경로 확인 후, ‘SU’와 ‘SU -' 명령어를 통해 작업 디렉터리의 변경 여부를 확인할 것이다.

 

1) SU root 명령어를 통한 실습

① (SU 명령어 사용 전) 일반 사용자의 현재 작업 디렉터리 경로(/tmp) 확인

② (SU 명령어 사용 후) root의 현재 작업 디렉터리 경로(/tmp) 확인

→ ①, ②번 실습을 통해 ‘SU’ 명령어 사용 시 작업 디렉터리 경로가 변경되지 않음을 확인함

 

2) SU - root 명령어를 통한 실습

① (SU - 명령어 사용 전) 일반 사용자의 현재 작업 디렉터리 경로(/tmp) 확인

② (SU - 명령어 사용 후) root의 현재 작업 디렉터리 경로(/tmp) 확인

→ ①, ②번 실습을 통해 ‘SU -’ 명령어 사용 시 변경한 사용자 계정(root)의 홈 디렉터리(/root)로 변경됨을 확인함

 

4. 결론

위에 실습에서 살펴봤듯이 ‘SU’와 ‘SU -‘ 명령어의 가장 큰 차이는 환경변수(PATH, 기타 임의의 환경변수)와 작업 디렉터리의 변경 유무임을 확인할 수 있었다.