su와 su - 명령어 차이
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, 기타 임의의 환경변수)와 작업 디렉터리의 변경 유무임을 확인할 수 있었다.