- sudo : 현재 계정에서 다른 계정의 권한만 빌림
- su : 다른 계정으로 전환
- su- : 다른 계정으로 전환 + 그 계정의 환경변수 적용
sudo는 root가 아닌 사용자가 root에 준하는 능력으로 sudo 다음에 나오는 명령을 실행하게 하는 명령어이다. su는 root 패스워드가 필요하지만 sudoer 에서 사용한 허락한 사용자는 모두 패스워드와 관계없이 쓸 수 있다. sudo는 슈퍼유저, 관리자 권한을 가지지만 근본적으로는 해당 사용자가 내리는 명령이다. sudo su는 일시적으로 그 명령을 root가 내리는 명령으로 한다. 예를 들어 sudo로 작업하면 소유자가 지금 사용자로 나오지만, sudo su로 작업하면 소유자가 root가 된다. sudo -s는 sudo만으로 su명령어와 같은 효과가 난다.
su는 root 암호를 알아야 하지만 sudo -s는 sudoer에서 허가된 사용자라면 본인 암호를 넣고 쓸 수 있는 su와 동일한 명령어이다. sudo로 가능한 명령어를 지정하는 곳은 sudoer 파일에서 설정 가능하다.
요약 :
sudo -s를 하고 자기 암호를 넣으면 root로 로그인한 쉘로 전환된다.
sudo su, sudo -s 둘 다 root shell을 사용할 수 있는 명령어이지만, 전자가 계정으로 독립적으로 root로 전환해 버리는데 반해(즉 root shell을 직접 실행) 후자는 현 계정의 모든 환경 변수들을 root계정으로 넘기는 차이가 있다.
그래서 sudo su를 하면 홈 디렉토리, 현재 디렉토리가 /root가 되지만 sudo -s를 하게 되면 홈 디렉토리는 그대로 유직되면 .bashrc 역시 전자가 $user의 ~/.bashrc를 읽는데 반해 후자는 /root/,bashrc를 읽는다.