태그 보관물: su

su

‘sudo su-‘vs ‘sudo -i’vs ‘sudo / bin / bash’-어떤 것이 중요합니까, 아니면 어느 것이 중요합니까? -, sudo -i및

루트를 수십 번 연속 입력 해야하는 작업을 수행 할 때 세션을 루트 세션으로 전환하는 것을 선호합니다. 인터넷에서 사용한 다양한 자습서와 지침 sudo su에서 sudo su -, sudo -isudo /bin/bash루트 세션을 여는 데 사용되는 것을 볼 수 있지만 이러한 차이점과 언제 또는 그 차이가 중요한지 명확하지 않습니다.

누군가 나를 위해 이것을 정리할 수 있습니까?



답변

이를 설명하려면 프로그램이 무엇을하는지 알아야합니다.

  • su-이 명령은 su다른 사용자 (로 전환하는 데 사용되는 S의 마녀 U의 SER),하지만 당신은 어떤 매개 변수를 사용하여 명령을 호출하여 루트 사용자로 전환 할 수 있습니다. su사용자 환경으로 전환 한 비밀번호를 입력 한 후 전환 할 사용자의 비밀번호를 묻습니다.
  • sudosudo루트 권한으로 단일 명령을 실행하기위한 것입니다. 그러나 su현재 사용자의 비밀번호를 묻는 메시지 와 달리 . 이 사용자는 sudoers 파일 (또는 sudoers 파일에있는 그룹)에 있어야합니다. 기본적으로 Ubuntu는 암호를 15 분 동안 “기억”하므로 매번 암호를 입력 할 필요가 없습니다.
  • bash-컴퓨터와 상호 작용하는 텍스트 인터페이스 로그인, 비 로그인, 대화식 및 비 대화식 쉘의 차이점을 이해하는 것이 중요합니다.

포탄의 종류 :

  • 로그인 쉘 : 로그인 쉘은 지정된 사용자로 시스템에 로그인합니다. 사용자 이름과 비밀번호가 필요합니다. 가상 터미널에 로그인하기 위해 ctrl+ alt+ F1를 누르면 로그인 쉘에 로그인 한 후 얻을 수 있습니다.
  • non-login shell : 로그인 하지 않은 상태에서 실행되며 현재 로그인 한 사용자입니다. 그놈에서 그래픽 터미널을 열면 비 로그인 쉘입니다.
  • 대화식 쉘 : 대화식으로 명령을 입력하거나 중단 할 수있는 쉘 (로그인 또는 비 로그인). 예를 들어 그놈 터미널.
  • 비 대화식 쉘 : 자동화 된 프로세스에서 실행되는 (서브) 쉘. 입력이나 출력이 보이지 않습니다.

따라서 사례는 다음과 같습니다.

  • sudo susudo명령으로 호출 합니다 su. Bash는 대화 형 비 로그인 셸이라고합니다. bash는 오직 실행 만한다 .bashrc. 루트로 전환 한 후에도 여전히 같은 디렉토리에 있음을 알 수 있습니다.

    user@host:~$ sudo su
    root@host:/home/user#
  • sudo su -이 시간은 로그인 쉘, 그래서 /etc/profile, .profile그리고 .bashrc실행하면 루트의 환경과 루트의 홈 디렉토리에있는 자신을 발견 할 것이다.

  • sudo -isudo su --i (초기 로그인 시뮬레이션) 옵션은 대상 사용자의 비밀번호 데이터베이스 항목에 의해 지정된 쉘을 로그인 쉘로 실행 하는 것과 거의 동일 합니다. 이 로그인 특정 자원과 같은 파일을 의미 .profile, .bashrc또는 .login읽고 쉘에 의해 실행됩니다.

  • sudo /bin/bash이것은 당신 sudo이 명령으로 호출한다는 것을 의미합니다 /bin/bash. /bin/bash비 로그인 쉘로 시작되어 모든 도트 파일이 실행되지는 않지만 bash 자체 .bashrc는 호출하는 사용자를 읽습니다 . 환경은 동일하게 유지됩니다. 당신의 집은 뿌리의 집이 아닙니다. 그래서 당신은 근본이지만 호출하는 사용자의 환경에 있습니다.

  • sudo -s$SHELL변수를 읽고 내용을 실행합니다. 경우 $SHELL포함 /bin/bash이 호출 sudo /bin/bash(위 참조).

검사:

로그인 쉘에 있는지 여부를 확인하려면 ( shopt내장 명령 이므로 bash에서만 작동 ) :

shopt -q login_shell && echo 'Login shell' || echo 'No login shell'

답변

차이점을 찾기 위해 다른 호출간에 결과 환경을 혼란시킬 수 있습니다.

몇 가지 중요한 변수에서 “작은” 차이점을 찾을 수 있습니다 .

  • PATH, LD_LIBRARY_PATH,LD_PRELOAD

또는 ~ /의 약간의 차이. 도트 파일 처리 ( ~/.config).

명령이 생성하는 $ HOME 기반 로그 파일 ( ~/.xsession.errors, 등 …) 또는 xauth 쿠키 ( ~/.Xauthority) 의 소유권도 고려하십시오 .

다음 명령을 시도하십시오 :


# 'su -' vs 'su'

diff <(sudo su - -c env | sort) <(sudo su -c env | sort)


# 'su -' vs 'sudo -i'

diff <(sudo su - -c env | sort) <(sudo -i env | sort)


답변