sudo su와 sudo -i의 기능적 차이점은 무엇입니까?


19

이 예에서 왜 하나가 다른 것보다 선호됩니까?

sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit

우분투 문서에 대한 링크를 제공하십시오.


"허용 된"답변의 선택을 재고하십시오. 가장 투표가 적은 것이 실제로 유일한 것입니다.
Kyle Strand

답변:


15

sudo su명령은 "사용자 전환"을 나타내며 다른 사용자가 될 수 있습니다. 허용 된 사용자가 sudoers 파일에 지정된대로 수퍼 유저 또는 다른 사용자로 명령을 실행할 수 있습니다.

‑i (초기 로그인 시뮬레이션) 옵션은 대상 사용자의 비밀번호 데이터베이스 항목으로 지정된 쉘을 로그인 쉘로 실행합니다. 이는 .profile 또는 .login과 같은 로그인 특정 자원 파일을 쉘에서 읽음을 의미합니다. 명령이 지정되면 쉘의 ‑c 옵션을 통해 실행되도록 쉘로 전달됩니다. 명령을 지정하지 않으면 대화식 쉘이 실행됩니다.

출처 : ManPage


1
"su를 사용하면 보안 문제가 발생하며 본질적으로 위험합니다." 뭐?
Monica Harming 중지

1
실행 sudo su하면 루트 비밀번호가 아닌 비밀번호를 묻는 메시지가 표시됩니다. 루트 사용자는 비밀번호가 필요하지 않습니다. 어쨌든 관리자가 루트 암호를 사용하고 있다고해서 모든 일반 사용자가 암호를 알고있는 것은 아닙니다.
모닝 그만 모니카

2
아닙니다. root로 sudo실행 su되며 root su는 암호를 몰라도 모든 사용자가 사용할 수 있습니다 . 시스템 작동 방식에 대한 기본적인 오해는 공감대 IMO를받을 자격이 있습니다.
모닝 그만 모니카

3
그리고 귀하의 의견을 삭제하면 혼란에 추가됩니다.
모닝 그만 모니카

1
당신은 훨씬 나아지지 않습니다. sudo -i루트의 암호를 요구하지 않으므로 질문과 관련이 없습니다.
정지에 지장을주지 모니카

14

sudo su현재 사용자 만 루트로 변경합니다. PATH와 같은 환경 설정은 동일하게 유지됩니다.

sudo -i 루트가 방금 로그인 한 것처럼 새로운 환경을 만듭니다.

다른 사용자를 사용하면 차이가 더 두드러집니다. 후에 sudo su bob당신은하지만, 같은 장소에서, 밥이 될 것입니다. 후에 sudo -i -u bob당신은 밥의 기본 쉘 밥의 홈 디렉토리에 밥, 밥의 함께있을 것입니다 .profile및 기타 로그인 스크립트가 실행 된.

man sudo무엇에 대한 자세한 내용은 참조하십시오 -i. 불행히도, man su세부 사항에 빛입니다.


man su다음과 같은 버전의 (login-1 : 4.1.4.2 + svn3283-3ubuntu5.1)을 찾았습니다.

/etc/login.defs 옵션 ENV_PATH 또는 ENV_SUPATH에 따라 $ PATH 재설정 (아래 참조).

$ IFS가 설정된 경우“<space> <tab> <newline>”으로 재설정됩니다.

환경의 기본 동작은 다음과 같습니다.

$ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH 및 $ IFS 환경 변수가 재설정됩니다.

--login을 사용하지 않으면 위의 변수를 제외하고 환경이 복사됩니다.

--login을 사용하면 $ TERM, $ COLORTERM, $ DISPLAY 및 $ XAUTHORITY 환경 변수가 설정된 경우 복사됩니다.

다른 환경은 PAM 모듈에 의해 설정 될 수 있습니다.

따라서 sudo su환경 변경 여부와 범위 는 배포 및 설정에 따라 다릅니다. 따라서 sudo -i이론적으로 더 이식성이 뛰어납니다.


su 않는 변화의 환경 설정을하고 사용하여 로그인을 시뮬레이션 할 수 있습니다 -또는 -l. 심지어 않고 -l, $PATH 한다 변경되었습니다. 이러한 주장을하기 전에 테스트하십시오! ( PWD동일 하게 유지 되었습니까 ?)
Kyle Strand

진짜 문제는 차이가있다 sudo su -그리고 sudo -i?
Kyle Strand

1
당신은 분명히 이것에 대해 약간의 생각을하고 실제로 쉘에서 약간의 테스트를하고 있습니다. 즉, 내 시스템 에서 (루트 암호를 $PATH사용 su하지 않고) 사용할 때 변경 되었음을 알 수 있습니다 sudo. info su(답변에 링크하는 것이 더 좋을 수도 있음) 에 따르면 su실제로 사용자의 비밀번호 항목을 읽었습니다. 아마도 $PATH내가보고 있는 변화는 시스템에 따라 다릅니다 (Debian 7에 있습니다).
Kyle Strand

1
흠. 내 man su(귀하가 연결 한 것보다 깁니다)는의 일부라고 말합니다 shadow-utils 4.1.5.1. 내 man페이지는 또한 사용 $PATH하더라도 설정되어 있다고 말합니다 --preserve-environment. 그래서 그것은 실제로 다른 버전의 차이점이라고 생각합니다 su.
Kyle Strand

1
이 동작은 PAM 구성의 영향을받습니다. /etc/pam.d/sudo/etc/pam.d/su완전히 다른 또는 정확히 같은 일을하도록 설정할 수 있습니다.
모니카

7

주요 문제는 제정신이 아닌 환경 설정 중 하나입니다.

sudo su새로운 쉘을 사용 하면 문제를 일으킬 수있는 명령을 실행하는 사용자로부터 환경을 얻습니다.

sudo -i당신 과 함께 깨끗한 루트 쉘을 얻을 수 있습니다.

sudo 및 shells에 대한 특별 참고 사항 참조

루트 쉘을 생성 할 필요가 거의 없다는 것을 관찰하십시오.


링크하는 "특별 참고 사항"은와 sudo -i비슷하지만 sudo su -실제로 명령을 실행하는 사용자로부터 환경을 얻지 못합니다 .
Kyle Strand

@KyleStrand 이것을 지적 해 주셔서 감사합니다. 오타였습니다. 질문은 실제로 sudo susudo -i입니다.
guntbert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.