(조금길다면 맨아래줄만 보시면 됩니다.)
보통 사용자(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 필요한 명령