루트에서 권한이 낮은 사용자로 애플리케이션을 실행할 때 sudo는 얼마나 안전합니까?

루트에서 권한이 낮은 사용자로 애플리케이션을 실행할 때 sudo는 얼마나 안전합니까?

루트 터미널에 로그인하여 다음과 같이 실행한다고 가정해 보겠습니다.

sudo -u '#1000' dbus-launch chromium
  • 우려해야 할 잠재적인 보안 문제가 있습니까?
  • 더 안전한 방법이 있나요? GUI 응용 프로그램과 함께 사용해야 합니다.사용자 실행확실히. . 을 사용하면 . runuser을 얻습니다 failed to open display.

이렇게 하면 루트로만 시작할 수 있는 사용자 정의 드라이버(g15daemon)를 통해 키보드에서 터미널 명령을 실행할 수 있습니다.

답변1

스도

관련 매뉴얼 페이지에서:

실제 유효한 uid 및 gid는 passwd 파일에 지정된 대상 사용자와 일치하도록 설정됩니다.

-P또한 sudo의 (그룹 벡터 유지) 옵션 설명에서:

그러나 실제 유효 그룹 ID는 여전히 대상 사용자와 일치하도록 설정됩니다.

기본적으로 sudo를 사용하여 실행되는 모든 명령은효과적인대상 사용자의 사용자 ID 및 그룹 ID입니다.

이 질문에 대답하려면,"더 안전한 방법은 없을까요?"-H, 권한이 없는 사용자로 sudo를 실행할 때 (HOME) 옵션을 사용하는 것을 선호합니다"HOME 환경 변수를 대상 사용자의 homedir로 설정하십시오". 얼마 전에 -Hsudo를 사용하여 쉘 스크립트에 옵션을 추가함으로써 예방할 수 있었던 예상치 못한 동작(자세한 내용은 기억나지 않음)이 발생했습니다 .

또한 .run 의 secure_pathenv_reset옵션이 sudo가 실행하는 명령에 전달될 환경 변수와 기타 흥미롭고 유용한 정보를 전달하지 않는 환경 변수를 표시하는지 확인해야 합니다 ./etc/sudoerssudo -V

또는 su $(id -un 1000) -c 'dbus-launch chromium'사용자 #1000의 유효 사용자 ID와 그룹 ID를 사용하여 Chromium을 실행할 수 있습니다.

동일한 작업을 수행하기 위해 를 사용하는 경우 (기본적으로) 및 환경 변수 만 대상 사용자의 변수로 설정된다는 su점에 유의해야 합니다 . 이 경우(대상 사용자는 권한이 없습니다. 즉, 슈퍼유저가 아닙니다) 대상 사용자의 권한으로 설정됩니다 . 나머지 환경 변수(예 : )는 유지됩니다.suHOMESHELLUSERLOGNAMEPATH

권한이 없는 프로세스를 실행하는 데 환경 데이터가 유출되는 것을 방지하려면 su로그인 셸의 또는 옵션을 사용하여 --login실행 해야 합니다.-lsu $(id -un 1000) -lc 'dbus-launch chromium'

위에서 설명한 대로 , 및 --login를 제외한 모든 환경 변수를 설정 해제 TERM한 다음 , HOME및 을 재설정합니다. SHELL또한 대상 사용자의 로그인 스크립트를 실행하기 전에 미리 컴파일된 기본값으로 설정하고 현재 작업 디렉터리를 대상 사용자의 홈 디렉터리로 설정합니다.USERLOGNAMEPATH

나는 일반적으로 로깅 기능과 이전에 sudo를 성공적으로 사용한 후 5분 이내에 비밀번호를 다시 입력하지 않아도 되는 "티켓팅 시스템" 때문에 su보다 sudo를 선호합니다.

관련 정보