su 명령어는 다들 아시다시피 로그온 후에 계정을 전환할 때 사용합니다.
흔히는 사용할 때 중간에 - (하이픈)을 붙이기도 하고 안 붙이기도 하는데, 이 차이를 잘 모르시는 분들도 계시더라구요.
su <계정명> vs su - <계정명>
su <계정명> 처럼 - 없이 사용하면 로그인한 계정의 환경 변수 값을 그대로 가지고, 변경된 계정의 권한만을 가집니다.
하지만 su - <계정명> 같이 - 을 붙이면 사용자가 실제 로그인한 것처럼 쉘 이용
아래 예시를 보시죠.
먼저 테스트를 위해 export로 root 계정의 환경변수를 설정합니다.
[root@testehp6 ~]# export VAR1='ChallengeIT'
설정한 VAR1 환경변수의 값을 확인해보시죠.
[root@testehp6 ~]# echo $VAR1
ChallengeIT
자, 이제 - 없이 su 명령어로 계정을 변경합니다.
[root@testehp6 ~]# su te6adm
그 다음 앞에서 root 계정에 설정한 환경변수를 확인하면, 환경변수 값이 그대로 보입니다. 원래 계정의 환경변수 값을 그대로 가져오기 때문이예요.
testehp6:te6adm 8> echo $VAR1
ChallengeIT
그럼 테스트를 위해 exit으로 본래 계정으로 돌아갑니다.
testehp6:te6adm 9> exit
Exit
이번에는 - 을 추가해서 사용해볼까요?
[root@testehp6 ~]# su - te6adm
Last login: Tue Aug 20 14:22:08 KST 2019 on pts/0
그럼 이번에는 그런 환경변수가 설정되지 않았다고 나오네요.
testehp6:te6adm 8> echo $VAR1
VAR1: Undefined variable.
이렇게 - 을 넣고 안 넣고의 차이가 있습니다.
만약 root로 전환하려는 경우에는 root 권한의 쉘을 이용하기 위해 반드시 - 옵션을 붙여야 합니다.
'Linux' 카테고리의 다른 글
NFS란? NFS 설정 및 주요 옵션 (0) | 2020.08.11 |
---|---|
Virtual Memory(SWAP) (0) | 2020.07.22 |
수세 리눅스 zypper 설치 시 Please insert medium…. 오류 해결방법 (0) | 2020.07.09 |
init 프로세스 (0) | 2020.07.07 |
리눅스 런레벨(Runlevel) (0) | 2020.03.18 |