“sudo -s”는 실제로 무엇을합니까?


26

우분투 10.04를 사용하고 있습니다.

터미널에서 " sudo -s "를 실행 한 후 프롬프트가

" XXX @ XXX "

" root @ XXX ",

루트 권한으로 변경된 것 같습니다.

그러나 여기서 "sudo"명령의 문서를 확인할 때 "sudo-s"에 대한 또 다른 이야기를 설명 할 수 있습니다. 누군가 " sudo -s "가 정확히 무엇을하고 있는지 설명해 줄 수 있습니까?



7
왜 askubuntu.com입니까? sudoUbuntu에 한정된 것은 아닙니다.
Dave Sherohman

답변:


9

이 둘은 실제로 일관성이 없습니다. sudo명령은 항상 사용자를 루트 또는 -u스위치로 지정한 사용자로 변경합니다. 모든 작업은 -s해당 사용자로 쉘을 시작하기위한 바로 가기를 제공합니다. 실제로 다음과 같습니다.

sudo $SHELL

/bin/sh그렇지 SHELL않으면 설정되지 않은 것으로 대체 될 수 있습니다.


6

sudo -s$SHELL환경 변수에 지정된 쉘을 수퍼 유저 / 루트로 실행합니다. 을 사용하여 다른 사용자를 지정할 수 있습니다 -u.

$SHELL환경 변수는 사용자의 기본 로그인 쉘의 경로가 포함되어 있습니다. 기본 쉘 프로그램의 실제 설정은 보통입니다 etc/passwd. 현재 세션에서 수행 한 작업에 따라 $ SHELL 변수에 현재 사용중인 쉘 프로그램이 포함되어 있지 않을 수 있습니다. 예를 들어 zsh로 자동 로그인 한 다음 bash를 호출하면 $ SHELL은에서 변경되지 않습니다 /bin/zsh.

현재 사용자 및 쉘 프로그램을 표시하십시오. echo $(whoami) is logged in and shell is $0

  • whoami 사용자가 작업중인 사용자 이름을 인쇄합니다.
  • $0 현재 실행중인 프로그램의 이름 / 경로를 포함합니다 (이 경우 쉘 프로그램).

3

매뉴얼에서 :

sudo는 허용 된 사용자가 sudoers 파일에 지정된대로 수퍼 유저 또는 다른 사용자로 명령을 실행할 수 있도록합니다.

-s Shell, SHELL 환경 변수에 의해 지정된 쉘 (설정된 경우) 또는 passwd (5)에 지정된 쉘을 실행합니다.

보다 심각하게 sudo -s는 쉘 환경 변수를 실행합니다. 변수를 추가하지 않았으므로 passwd에 지정된대로 실행되므로 루트로 연결하십시오.


1
사용자가 사용자를 제공하지 않으면 기본적으로 루트로 설정되어 있다는 것은 매뉴얼에서 분명하지 않습니다. -u이를 배우려면 옵션에 대한 설명을 읽어야합니다 . 그러나에 익숙하지 않은 사람은 sudo을 보는 것을 모른다 -u.
wisbucky


0

현재 쉘 위에 쉘의 다른 인스턴스를 작성하는 것처럼 보이지만 루트 권한이 있습니다. 나는 당신이 후에 내기거야 sudo -s당신이 출구를 입력하면, 원래 쉘로 돌아갈 것입니다.


-1

sudo -s를 사용하면 현재 ID를 확인하도록 요청하여 사전 승인 된 [/ etc / sudoers 참조] 명령을 실행할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.