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
.