growisofs
을 실행 하려고 할 때마다 sudo
항상 다음과 같은 오류 메시지가 나타납니다.
$ sudo -i growisofs
:-( growisofs is being executed under sudo, aborting!
See NOTES paragraph in growisofs manual page for further details.
$ sudo -s growisofs
:-( growisofs is being executed under sudo, aborting!
See NOTES paragraph in growisofs manual page for further details.
이로 인해 sudo su -
후속 작업을 수행해야 했습니다 growisofs
.
$ sudo su - -c growisofs
growisofs: previous "session" device is not specified, do use -M or -Z option
-or-
$ sudo su -
# growisofs ...
이 작업을 수행하지 않고도 이를 수행할 수 있는 다른 방법이 있습니까 su -
?
배경
growisofs
이 동작은 높은 권한으로 파일 시스템에 액세스하는 것을 방지하기 위해 도구에 내장되어 있습니다 .
발췌
노트
실행되면
sudo(8)
growisofs
시작이 거부됩니다. 그 이유는 다음과 같습니다. 물론 ISO9660 레이아웃을growisofs
즉시 생성하여 간접적으로 DVD 미디어에 기록할 데이터 세트에 액세스mkisofs
하거나 미리 만들어진 이미지에 기록할 데이터 세트에 직접 액세스해야 합니다. 아래에서sudo(8)
효과적으로 실행하면growisofs
sudoer에게 파일 시스템의 모든 파일에 대한 읽기 권한이 부여됩니다. 이것은 성장 isofs가 환경 변수를 구문 분석하여 mkisofs 실행 가능 이미지에 대한 대체 경로를 결정한다는MKISOFS
사실로 인해 더욱 악화됩니다 . 이는 실행될 때sudo(8)
,growisofs가 sudoer에게 높은 권한으로 선택한 프로그램을 실행할 수 있는 권한을 효과적으로 부여한다는 것을 의미합니다. 어떤 이유로든 위의 내용이 여전히 허용 가능하다고 생각하고 결과에 기꺼이 직면할 의향이 있는 경우sudo(8)
실제 바이너리를 얻기 위해 다음 래퍼 스크립트를 제자리에서 실행하는 것을 고려하십시오growisofs
.#!/bin/ksh unset SUDO_COMMAND export MKISOFS=/path/to/trusted/mkisofs exec growisofs "$@"
그러나 위의 "해결 방법"에 대해 제안된 대안은 실제로
growisofs
set-root-uid를 설치하는 것입니다. 이 경우 데이터에 액세스하거나mkisofs
데이터에 대한 무단 액세스를 방지하기 위해 실행하기 전에 권한이 삭제됩니다.
답변1
이것이 하는 일은 환경 변수를 growisofs
찾고 SUDO_COMMAND
그것이 발견되면 중단하는 것입니다. 효과가 있는 이유 는 환경을 정화하기 sudo su -
때문입니다 .su -
전체 쉘을 얻지 않고도 다음을 수행할 수 있습니다.
sudo env -i growisofs
에서와 같이 환경이 지워집니다 su -
. 유일한 차이점은 완전히 빈 환경 대신 su -
기본 변수( /etc/profile
및 기타 등등)도 원래 위치로 되돌린다는 것입니다.env -i
보다 정확한 해결책은 다음과 같습니다.
sudo env -u SUDO_COMMAND growisofs
이것은 게다가 환경을 보호할 것입니다 SUDO_COMMAND
.
답변2
chmod u+s /usr/bin/growisofs solves this problem.
그러나 이는 제공된 보안을 무너뜨리는 "잘못된 접근 방식"의 좋은 예입니다 sudo
. SetUID는 growisofs
신중한 구성보다 더 심각한 보안 문제를 일으키며 sudo
개인 데스크탑 시스템에서는 쓸모가 없습니다.