sudo
또는로 프로그램을 호출하는 방법에 따라 크게 달라집니다 su
.
예를 들어 지금이 순간의 시스템에서 :
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
여기서 [1] = / usr / local / sbin : / usr / local / bin : / usr / sbin : / usr / bin : / sbin : / bin
Env = 환경 변수는 $ USER에서 $ 1에서 가져온 1과 5로 재설정됩니다. 2,3,4.
따라서 스크립트 또는 다른 옵션으로 시작된 프로그램은 다른 $PATH
, $HOME
쉘은 다른 .bashrc
, .profile
환경 변수를 읽을 수 있습니다 . 와 관련된 파일을 읽습니다 $HOME
. 각 사용자는 다른 방식 (변수 $PATH
,, .bashrc, .profile, .bash_profile, alias ...) 으로 환경을 수정할 수 있습니다 . 특히, 사용자는 그의 디렉토리에서 다른 순서의 디렉토리를 가질 수 있으며, $PATH
결과적으로 스크립트는 예를 들어 /home/$USER/bin
루트에서 예상되는 경로 의 명령 대신에 명령을 실행할 수 있습니다 .
당신은 아래의 프로그램을 실행할 수 있습니다 sudo -i
당신이 루트로 기록 된대로 su -
,하지만 당신은 그것을 실행하는 경우에는 다른 동작을 할 수 있습니다 sudo MyCommand
또는 함께 su -c MyCommand
.
보낸 사람 man su
:
설명 부분에서 :
현재 환경이 새 쉘로 전달됩니다 . $ PATH 값은 일반 사용자의 경우 / bin : / usr / bin으로 재설정 되거나 수퍼 유저의 경우 / sbin : / bin : / usr / sbin : / usr / bin 으로 재설정 됩니다
...
옵션 부분 :
- , -l , --login 사용자가 직접 로그인 했을 것으로 예상
되는 환경과 유사한 환경을 제공합니다 .
남자에서 sudo
-i , --login
대상 사용자의 비밀번호 데이터베이스 항목으로 지정된 쉘을 로그인 쉘로 실행합니다. 이는 .profile 또는 .login과 같은 로그인 특정 자원 파일을 쉘에서 읽음을 의미합니다. 명령이 지정되면 쉘의 -c 옵션을 통해 실행되도록 쉘로 전달됩니다. 명령을 지정하지 않으면 대화식 쉘이 실행됩니다. sudo
쉘을 실행하기 전에 해당 사용자의 홈 디렉토리로 변경을 시도합니다. 명령은 사용자가 로그인 할 때와 유사한 환경에서 실행됩니다 . sudoers (5) 매뉴얼의 명령 환경 섹션에는 -i 옵션이 sudoers 정책이 사용 중일 때 명령이 실행되는 환경에 어떤 영향을 미치는지 설명되어 있습니다.