su 와 sudo 와 su - 입력의 차이?

by Japser posted Aug 05, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

(조금길다면 맨아래줄만 보시면 됩니다.)

 

 

 

보통 사용자(user) 계정으로 로그인 하여 리눅스를 사용하죠

 

무언갈 설치하거나 지우거나 변경할때

 

답변 달아주시는 분들 보면 앞에 sudo 입력후 명령어를 입력한다던지

 

su 또는 su - 입력하여 root 로 권한 상승후 사용하기도합니다.

 

 

 

root 권한으로 변경할 때 가장 친숙한 명령어가 su입니다.

 

 

 

su는 Substitute User

 

로그인된 사용자를 로그아웃하지 않고, root 또는 다른 사용자로 변경 로그인시 사용합니다.

 

 

 

사용법 : su [변경하고자 하는 사용자 ID]

 

 

 

su 뒤에 변경할 사용자 ID를 입력하지 않는다면,

 

su root와 동일하게 동작합니다.

 

 

 

 

 

$ su

Password: root 사용자 패스워드 입력

#root 

위처럼 일반계정쉘 $이 보이다가

 

su root로 변경된 후 관리자계정쉘 #로 변경되는 것을 볼 수 있습니다.

 

 

 

하지만 su 뒤에 -를 붙이면 동작방식이 달라집니다.

 

‘-’의 의미는 무엇일까요?

 

 

 

‘-’

 

‘-l’

 

‘--login’

 

 

 

‘-’는 -l 혹은 --login과 동일한 명령어입니다.

 

곧, su -는 su --login root와 동일한 명령입니다.

 

‘-’의 유무는 환경변수와 워킹디렉토리에 영향을 줍니다.

 

편의성을 위해 alias 설정이라던지 /etc/에 있는 환경변수값들을 호출하여 옵니다.

 

예시로 일반 사용자 계정으로 (test1) 로그인 후 su 로 root 권한 으로 변경합니다. (이때 경로는 해당 사용자경로 그대로인 상태로권한만 변경됩니다.)

 

일반 사용자로는 apt clean  이란 명령이 탭 자동완성이 되지않습니다.

 

환경변수가 없기때문이죠

 

su - 로 로그인 하면 경로는 /root 로 변경됩니다. 환경변수도 모두 적용된 상태로 되며 apt clean 이 탭으로 자동완성이 가능합니다

 

su는 기존 사용자 환경에서 설정된 환경변수를 그냥 그대로 유지합니다.

 

그에 반해, su -는 기존 사용자 환경에서 사용하던 환경변수를 모두 지워버립니다.

 

 

 

온전히 root 로 작업을 원한다 su - 으로 로그인

 

다른계정으로 로그인 하고싶다면 su - 사용자명

 

현재 로그인된 계정에서 기존 사용자 환경변수는 그대로 두고 root 권한만 얻고싶다. su

 

권한상승만 일시적으로 얻어서 root 권한으로 파일실행 또는 설치같은 작업이 필요하다면 sudo 필요한 명령