sudo
를 사용하는 것과 사용하는 것 사이에 차이가 있나요 su -c
? 다른 것 대신에 하나를 사용해야 하는 상황이 있습니까?
저는 이전에 Ubuntu를 사용했고 sudo
그것이 어디에나 있는 것처럼 보였지만, 이제 Fedora 15를 시험해 보고 있는데, su -c
이 관용구는 제가 뭔가를 하는 방법을 배우려고 할 때 많이 등장합니다. 비록 여전히 sudo
가끔 사용되는 것을 볼 수 있지만 말이죠.
답변1
sudo
와 의 차이점은 su
인증을 수행하는 방식입니다.
su
대상 사용자의 비밀번호를 묻는 메시지를 표시합니다.sudo
원본 사용자에게 명령을 실행할 수 있는 권한이 있는지 확인하십시오(권한은 에 지정되어 있음/etc/sudoers
). 구성에 따라 원본 사용자의 비밀번호를 묻는 메시지가 표시될 수 있으며, 이는 콘솔을 무인 상태로 두는 위험을 줄이고 권한 상승이 진행 중임을 사용자에게 경고합니다.
권한이 부여되면 효과는 동일합니다. 루트로 명령을 실행합니다(또는 명령줄에 지정된 경우 다른 사용자로).
더 미묘한 차이가 있습니다. 동일한 옵션을 사용하지 않으며 정확히 동일한 방식으로 실행하는 명령에 대한 환경을 설정하지 않습니다. "명령"의 의미는 약간 다릅니다. for는 su -c
대상 사용자의 쉘에 의해 실행되는 문자열인 반면 for에는 sudo
옵션이 없으며 매개변수와 함께 실행되는 프로그램입니다. 그러나 일반적인 사용법에서는 동일합니다.
답변2
의미상으로 다릅니다.
사용한다는 su
것은 호출된 프로세스가 실제 대상 사용자가 아니라는 사실을 알기를 원하지 않는다는 것을 의미합니다. 매뉴얼 페이지에서는 항상 option 을 선택하도록 권장합니다 su --login
.
사용법은 sudo
정확히 반대를 의미합니다. 프로세스에 자신이 실제로 누구인지 알려주기 위해 sudo
새로운 환경 변수를 설정할 수도 있습니다 .SUDO_UID
그런데, su
고대 유닉스 디스플레이 관리자 또는 쉘 구성 파일의 경우 다음을 설정합니다.몇 가지 환경 변수만( HOME
등 PATH
) 대화형 셸을 호출하기 전에. 이 변수를 재설정 합니다 su
.
그러나 최신 초기화 시스템은 더 많은 환경 변수를 설정합니다. 예를 들어 Linux PAM 설정 XDG_RUNTIME_DIR
은 재설정되지 않습니다 su
. 따라서 su --login
실제 로그인을 시뮬레이션할 수 없습니다. 바라보다https://github.com/systemd/systemd/issues/7451#issuecomment-346787237