루트가 doas를 통해 무제한 명령을 실행해야 하는 이유는 무엇입니까?

루트가 doas를 통해 무제한 명령을 실행해야 하는 이유는 무엇입니까?

doas방금 읽다가 우연히 발견했어요구성에 대한 매뉴얼 페이지다음 예를 찾았습니다.

다음 예에서는 wsrc 그룹의 사용자가 포트를 구축할 수 있도록 허용합니다. 환경 변수 PS1 및 SSH_AUTH_SOCK를 유지하고 ENV를 설정 해제하면서 tedu가 비밀번호 없이 루트로 procmap을 실행할 수 있도록 허용합니다.또한 루트 자체가 무제한 명령을 실행할 수 있도록 허용합니다..

# Non-exhaustive list of variables needed to 
# build release(8) and ports(7) 
permit nopass setenv { \ 
        FTPMODE PKG_CACHE PKG_PATH SM_PATH SSH_AUTH_SOCK \ 
        DESTDIR DISTDIR FETCH_CMD FLAVOR GROUP MAKE MAKECONF \ 
        MULTI_PACKAGES NOMAN OKAY_FILES OWNER PKG_DBDIR \ 
        PKG_DESTDIR PKG_TMPDIR PORTSDIR RELEASEDIR SHARED_ONLY \ 
        SUBPACKAGE WRKOBJDIR SUDO_PORT_V1 } :wsrc 
permit setenv { -ENV PS1=$DOAS_PS1 SSH_AUTH_SOCK } :wheel 
permit nopass tedu as root cmd /usr/sbin/procmap 
permit nopass keepenv root as root 

루트는 루트인데 왜 권한이 필요합니까?

sudo참고: 저는 이것을 대체/상속 으로 표시했습니다 doas. 따라서 추론이나 개념은 sudo두 가지 모두에서 나오거나 적용될 수 있습니다.

답변1

이 의견을 맥락에서 벗어났습니다. 이 줄은 다음과 같은 상황에서 유용합니다.포트 구축:

permit nopass keepenv root as root

건설항에서는 항상 전화가 오고 있습니다 doas. 위 라인이 없으면 포트가 로 빌드되더라도 전체 환경에서 하는 것처럼 root위 라인으로 포트를 빌드합니다 .root

답변2

다른 답변의 일부에 동의하지 않습니다. 나만의 포트 구축강조하다항상 그런 것은 아니다sudo에 전화하기(또는 DOAS) 및 ~해야 한다일반(전용) 사용자가 수행합니다. 특정 make 대상(예: 포트를 설치하거나 제거하는 대상 make install)만 이 프로그램을 호출합니다( SUDO또는 환경에 지정된 경우). /etc/mk.conf매뉴얼에서 이 설정을 언급하는 이유는 배치 빌드에 dpb(1)을 사용하기 위해서입니다.


이 줄이 있는 이유는 OpenBSD의 기본 파일과의 이전 버전과의 호환성 sudoers때문입니다.메시지 제출말하는:

CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]     2015/08/28 07:19:50

Modified files:
        usr.bin/doas   : doas.conf.5 

Log message:
Document an example that lets root run unrestricted doas commands as
root ("permit nopass keepenv root as root"), matching the old
behaviour from OpenBSD's sudoers file ("root ALL=(ALL) SETENV: ALL").

OK sthen@

이것이 작동하는 이유는 무엇입니까? 다음과 같은 루트 권한이 필요한 일부 작업을 수행하는 스크립트를 상상해 보세요.

#!/bin/sh
cmd1
doas cmd2
cmd3

doas 사용 권한이 있는 사용자로만 이 스크립트를 성공적으로 실행할 수 있습니다. 기본적으로,아니요사용자(루트가 아닌 경우에도)는 doas를 사용할 수 있는 권한이 있습니다 /etc/doas.conf. 해당 줄이 없으면 permit root as root위 스크립트를 루트로 실행하면 실패하며 이는 놀랍고 불편할 수 있습니다.

이제 다른 대답에 동의하는 부분은 다음과 같습니다. 위에서 언급한 것처럼 OpenBSD의 기본 빌드 스크립트에는 권한을 SUDO설정 sudo하거나 doas높일 수 있는 변수가 있습니다. 에서 명령을 실행하는 경우 $SUDO디렉터리 접두사 및 빌드 시스템이 제대로 작동하는 데 필요한 기타 사항과 같은 환경 변수를 보존하려고 합니다.


한 가지 더: 인용된 매뉴얼 발췌의 첫 번째 큰 예만이 포트 구축에 관한 것이라는 점에 유의하십시오. 인용된 텍스트를 네 가지 개별 항목의 글머리 기호 목록으로 읽으십시오.

아래 예

  • wsrc 그룹의 사용자가 포트를 구축하도록 허용합니다.
  • [허용] 환경 변수 PS1 및 SSH_AUTH_SOCK을 유지하고 ENV 설정을 해제하면서 휠이 모든 사용자로 명령을 실행할 수 있습니다.
  • tedu가 비밀번호 없이 루트로 procmap을 실행할 수 있도록 허용합니다.
  • 또한 루트 자체가 무제한 명령을 실행할 수 있도록 허용합니다.

분명히 procmap과 관련된 예는 포트 구축과 관련이 없습니다. 두 번째 예는 Wheel 그룹의 구성원이 권한을 루트로 승격할 수 있는 사람들이라는 일반적인 관행입니다(예: su, sudo 또는 doas를 통해).

이제 왜 이것을 원합니까? 일부 스크립트나 makefile에는 SUDO 변수가 포함되어 있습니다. 기본적으로 어떤 사용자도 doas를 사용할 권한이 없습니다. 에 신청해야 합니다 /etc/doas.conf.

관련 정보