날짜: 2024-05-13
sudo -s
, sudo -i
, 그리고 sudo su
명령은 모두 사용자가 루트 권한으로 작업을 수행할 수 있도록 해 주지만, 이들 간에는 작은 차이점들이 있습니다. 다음은 각 명령의 세부적인 차이점을 설명합니다.
sudo -s
명령은 현재 사용자의 환경 변수를 대부분 유지하면서 새 쉘을 시작합니다. 이 명령은 /etc/passwd
에 정의된 루트 사용자의 로그인 쉘을 실행하지만, HOME
, SHELL
, USER
, LOGNAME
을 제외한 대부분의 환경 변수는 현재 사용자의 것을 유지합니다.
- 사용 예: 일시적으로 루트 권한이 필요할 때, 현재 사용자의 환경 설정을 유지하면서 루트 권한을 얻고 싶을 때 사용합니다.
sudo -i
명령은 루트 사용자로 새로운 로그인 쉘을 시작합니다. 이것은 마치 루트 사용자로 로그인했을 때와 같이, 루트 사용자의 홈 디렉토리로 이동하고, 루트 사용자의 로그인 쉘 환경을 완전히 로드합니다 (~/.bashrc
, ~/.profile
등).
- 사용 예: 루트 사용자의 환경을 완전히 로드하여 작업해야 할 때 사용합니다. 예를 들어, 사용자 홈 디렉토리에 있는 스크립트나 환경 설정을 루트 권한으로 실행할 필요가 있을 때 유용합니다.
sudo su
명령은 sudo
를 사용하여 su
명령을 실행합니다. 이 명령은 현재 사용자의 일부 환경 변수를 유지하면서 루트 사용자의 쉘을 시작합니다. su
는 보통 사용자 전환 시 사용되며, sudo su
는 특히 루트 권한으로 전환할 때 자주 사용됩니다.
- 사용 예: 보통은 루트 권한으로 전환할 필요가 있을 때 간단하게 사용됩니다. 다만,
sudo -i
처럼 루트 사용자의 로그인 환경을 완전투로 로드하지는 않습니다.
sudo -s
는 현재 사용자의 환경을 대부분 유지하면서 루트 쉘을 시작합니다.sudo -i
는 루트 사용자로 완전한 로그인 세션을 시작하여, 루트 사용자의 로그인 환경을 완전히 로드합니다.sudo su
는sudo
를 사용하여su
명령을 실행하며, 루트 사용자로 전환하지만,sudo -i
처럼 환경은 완전히 로드하지 않습니다.
얼핏보면 sudo -s
와 sudo su
가 비슷해 보인다 그래서 뽀너스로 아래 내용을 추가함.
- 환경 변수:
sudo -s
는 현재 사용자의 환경 변수를 더 많이 유지합니다.sudo su
는su
명령을 통해 루트로 전환되므로, 일반적으로 사용자 환경보다는 루트 환경 변수가 더 많이 적용됩니다. - 쉘 로딩 방식:
sudo -s
는 현재 사용자의SHELL
환경 변수에 지정된 쉘을 사용합니다.sudo su
는/etc/passwd
에 정의된 루트 사용자의 기본 쉘을 사용합니다. - 초기화 파일의 로딩:
sudo -s
는 현재 사용자의 쉘 초기화 파일을 그대로 사용할 가능성이 있습니다. 반면,sudo su
는 보통 루트 사용자의 쉘 초기화 파일을 로드하지 않습니다.
각각의 사용법은 상황에 따라 다르며, 보안 정책이나 관리자의 선호에 따라 가장 적합한 명령을 선택해 사용할 수 있습니다.