일반적으로 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" 이라고만 알아도 두가지의 차이점을 이해할 수 있다.
'Linux' 카테고리의 다른 글
[LINUX] 리눅스 file attribute 정리 (0) | 2025.03.23 |
---|---|
[LINUX] SetUID, SetGID, Sticky bit 특수권한 설명 (0) | 2025.03.16 |
[LINUX] 리눅스 umask 파일 기본 권한 설정 (0) | 2025.03.15 |
[LINUX] 리눅스 chmod 사용법(파일 권한 관리) (0) | 2025.03.15 |
[LINUX] 리눅스 계정 패스워드 관리 (0) | 2025.03.12 |