본문 바로가기
Dev/network

sudo , su, su -

by RoundRyun 2021. 2. 2.

리눅스는 다중 사용자 시스템이다. 즉, 한대의 OS에 여러 사용자가 접속해서 사용하게 된다. 더군다나 개인용 PC보다는 서버용 OS로 많이 사용되기 때문에 권한에 대한 관리가 매우 엄격하고, 중요하다.

 

하지만 리눅스의 각종 기능들을 사용하려면 Root 권한 즉, 슈퍼유저의 권한이 필요한 경우가 많다.

때문에 리눅스에서는 터미널상에서 슈퍼유저의 권한으로 명령을 실행하게 하거나, Root사용자를 포함한

다른 계정으로 전환하는 명령어를 제공한다.

 

상황에 따라서 sudo/ su / su - 명령어를 사용하게 되는데, 비슷해 보이지만 사실 중요한 차이가 있다.

 

sudo

sudo는 일반 사용자가 root권한을 잠시 빌려 명령을 실행하게 하는 명령어이다. 일반적으로 다음과 같이 사용한다.

$sudo 명령어

sudo는 권한만 잠시 빌리는 것이기 때문에 근본적으로 명령을 내리는 주체는 현재 사용중이다.

때문에 생성, 수정, 삭제 등 이력이 남는 작업을 했을 때 root유저가 아닌 해당 유저의 이름이 남게 된다.

 

$sudo -s, $sudo su 

명령어를 통해 root 계정을 반영구적으로 빌릴 수 있다.

 

sudo su로 root로 전환했을 때의 home디렉터리는 /root이다.

즉, 환경변수를 root 계정의 상태로 전환하는 것이다.

하지만 sudo -s를 사용했을 때의 home 디렉터리는 현재 사용자의 홈 디렉터리이다. 

즉, 현재 계정의 환경변수들을 root로 넘기는 것이다.

 

su

su 명령어는 현재 사용자를 로그아웃 하지 않은 상태에서 다른 사용자의 계정으로 전환하는 명령어이다.

이때, su와 su-는  모두 로그인 하려는 대상 계정의 비밀번호를 요구한다.

$su 계정명

 

su -

su -는 다른 사용자의 계정으로 완전히 전환하고, 전환한 사용자의 환경설정을 불러온다.

 

su 명령어는 현재 계정의 환경변수들을 유지한 채, 대상 계정으로 전환한다. 반면에 su - 명령어는 다른 사용자의 계정으로 전환하고 환경변수까지 그 계정의 상태로 완전히 전환한다.

 

 

출처: www.leafcats.com/168