'리눅스 root 계정 전환 방법'에 해당되는 글 1건

일반적으로 root 유저로 계정을 전환할 때 우리는

$ su -

명령을 사용하게 된다.

그런데, 

$ sudo -i

라는 명령을 사용해도 동일하게 root 유저가 되는데 어떤 차이가 있는건지 궁금해졌다.

 

1. sudo -i 의 동작

sudo -i 에서 "-i" 옵션은 대화형 모드 + root 계정의 *로그인 쉘 실행을 의미한다.(interactive mode + root login shell)

이때, root 계정의 쉘 환경과 환경변수를 모두 적용한다. sudo는 (당연하게도)사용자가 현재 sudo 권한을 가질 때만 작동한다.

sudo 명령 자체가 단일 명령어를 root 권한으로 실행하는 것이기 때문에, 현재 로그인 쉘(세션)은 유지된다.

sudo -i 는 실제로 root 계정의 로그인 쉘을 실행하며, 환경변수 $HOME, $PATH 등을 root 계정의 것으로 설정한다.

 

*로그인 쉘: 로그인 쉘은 사용자가 로그인할 때 실행되는 쉘로, 사용자 계정의 환경 변수($PATH, $HOME 등)와 셸 프로파일(.bash_profile, .bashrc 등)이 로드된다. sudo -i는 root 계정으로 로그인한 것처럼 로그인 쉘을 실행하는 것이다.

2. su - 의 동작

su 는 substitute user 의 약자로, 현재 로그인 쉘을 유지하면서 새로운 유저의 로그인 쉘로 변경하는 것이다. "-" 옵션을 주면 root 계정으로 전환되고, root 계정의 쉘 환경과 환경변수가 모두 적용된다. 

 

3. sudo -i 와 su - 의 차이점

su - 는 root 계정의 비밀번호가 필요하다.

반면, sudo -i 는 자신의 비밀번호가 필요하다. root 계정의 비밀번호는 필요하지 않다. sudo 권한을 통해 root 계정의 환경을 임시로 사용한다고 이해하면 쉽다.

 

즉, sudo 명령어의 -i 옵션은 "interactive login shell" 이라고만 알아도 두가지의 차이점을 이해할 수 있다.

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,