sudo 로그인과 프롬프트 표시의 차이점

sudo 로그인과 프롬프트 표시의 차이점

sudo -s와 의 차이점은 무엇 sudo -i이며 왜 다른 껍질을 제공합니까? 그것은 -s나를 내 안에 유지 bash하고 -i나에게 주는 것 같습니다 sh.

MacOSX High Sierra 10.13에서 터미널에 입력하고 sudo -s비밀번호를 입력하면 사용자 이름이 루트로 표시되지만 프롬프트에는 달러 기호가 표시됩니다.

user1@mymachine:~$ sudo -s
**root@mymachine:~$**

하지만 을 입력하면 다음과 같은 결과 sudo -i가 나타납니다.

user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**

위의 예에서 루트인 경우 해시 기호 #가 표시되지 않는 이유는 무엇입니까 sudo -s? 나는 정말로 루트가 아닌가?
둘 사이에 환경 변수가 다른가요?

답변1

가장 먼저 깨달아야 할 것은 가 sudo -s와 동일 sudo -s root하고 와 sudo -i동일하다는 것입니다 sudo -i root. sudo에서 사용자를 생략할 때마다 사용자 루트를 대상으로 한다고 가정합니다.

sudo -ssudo -i대상 사용자로 로그인하는 동안 대상 사용자로 쉘을 실행합니다 .

실행할 때마다 sudo -s효과적으로 쉘을 루트 사용자 쉘로 변경하는 반면, 실행할 때마다 sudo -i효과적으로 현재 사용자에서 로그아웃하고 루트로 로그인하게 됩니다. 쉘을 루트 사용자 쉘로 변경할 때마다 사용자 내보내기 정보는 계속 유지되므로 이를 아는 것이 중요합니다. 실행하면 sudo -i사용자에서 로그아웃하고 루트로 로그인하게 됩니다. 이는 루트 사용자의 셸 구성을 채택한다는 의미입니다.

이것은 관련이 없지만 실수로 문제가 발생할 수 있으므로 사용자를 루트로 변경하지 않아야 합니다. 성가시더라도 에스컬레이션이 필요한 모든 명령을 sudo해야 합니다. 정말로 루트 쉘로 변경하려면 su루트로 로그인할 수 있는 명령을 실행해야 합니다.

관련 정보