글 작성자: nouu

https://storycompiler.tistory.com/44

 

[Ubuntu/Linux] su와 su - 차이점을 정리해보기

사용자 계정으로 로그인한 후 간혹 관리자 root 권한이 필요할 때가 있습니다. 패키지를 설치하거나, 시스템 설정 파일을 수정하거나, 신규유저를 추가하거나, 다른 계정으로 파일권한을 변경하

storycompiler.tistory.com

 

 

https://gxnzi.tistory.com/75

 

리눅스(Linux) su / su - / sudo 명령어, 차이

리눅스 (Linux)에서 특정 명령을 실행하거나, 특정 파일에 접근하기 위해서 때로는 루트 (root) 권한이 필요한 경우가 있습니다. 이러한 경우에 사용하게 되는 su / su - / sudo 명령어들과 각 명령어들

gxnzi.tistory.com

 

https://velog.io/@byeol4001/root%EC%99%80-admin-user-%EA%B7%B8%EB%A6%AC%EA%B3%A0-sudo%EC%99%80-su-su-%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

sudo와 su, su - root 그리고 admin, user 의 차이

배포하는 과정에서, sudo su - root 라는 명령어를 입력하는데,sudo는 알겠는데 root는 왜나오지.. 싶어서 정리 하지 않고선 못넘어 가겠으니오늘의 정리는 이것으로 정했다.😲여러 블로그를 읽고 돌

velog.io

 

우분투 리눅스 관련 공부를 수행중 사용자를 변경하거나 하나의 명령을 사용하기 위해 일시적으로 권한을 부여받는 su와 su - 에 대해 알아보겠다.

 

 

su는 substitute user (대리 유저)에 줄임말이다. 위와 같이 ubuntu 계정에서 root나 다른 사용자의 권한을 전환 할 때 사용한다. 

 

만약 su 뒤에 변경하는 사용자 명을 적지 않고 아무것도 적지 않는다면 su root의 명령어로 인식하여 실행된다. 

 

 

su -에서 -는 무엇일까? --login 또는 -l 의 줄임말이다. 즉 su --login root를 짧게 쓴 약어이다. su와 su-의 차이점은 환경 변수와 워킹 디렉토리에 대한 영향의 유무이다.

 

 

1. 환경변수 (Path)에 대한 차이 

기본적인 os에 대한 환경변수는 그 사용자에 따라서 변경이 된다. 하지만 특정 사용자가 만든 환경변수(사용자 환경에서 만든 환경변수)는 su 명령어를 통해 다른 사용자로 접근한다면 그 환경변수의 세션은 끊기지 않아 환경변수가 유지되지만 su --login은 환경변수의 세션이 끊겨 default로 초기화된다. 

 

 

$ export nouu=hyunje # 전역변수 nouu를 선언 및 할당
$ su # su로 root 계정 접근 
# echo nouu #nouu 변수 출력

 사용자 환경 변수 및 전역변수를 선언한 뒤 su로 로그인 결과 위와 같이 해당 결과가 잘 출력된 것을 볼 수 있다.

 

 

 

$ export nouu=choihyunje
$ su -
# echo $nouu

반면 su - 로 접근하여 해당 사용자 환경 변수를 출력했을 때 null 값이 나온다는 것을 볼 수 있다. 

 

 

 

 

2. 현재 내가 위치한 디렉토리인 워킹 디렉토리의 변경 유무 

$ pwd # 현재 내가 위치한 디렉토리 확인
$ su # su 명령어로 root 계정 접근
$ pwd # 현재 내가 위치한 디렉토리 확인 (이전 사용자가 위치한 그대로 있음)

$ exit # root 계정 나가기, 원래 계정으로 돌아옴

$ su - # su --login으로 root 계정 접근
$ pwd # 현재 내가 위치한 디렉토리 확인 (/root)

 

현재 내가 위치한 디렉토리를 확인해보니 /media 워킹 디렉토리에 있다. 이때 su 명령어를 이용하여 root 계정에 접근을 한 뒤 다시 pwd를 쳐서 워킹 디렉토리를 확인해보니 그대로 /media에 위치하는 것을 볼 수 있다. 하지만 그 아래에 명령을 보듯이 su - (su --list) 명령어를 쳐서 pwd를 확인하면 root 전용 공간인 /root 디렉토리에 오는 것을 볼 수 있다.