sudo를 사용하면 대상 사용자가 아닌 대상 그룹을 사용하여 프로그램을 실행할 수 있습니까?

sudo를 사용하면 대상 사용자가 아닌 대상 그룹을 사용하여 프로그램을 실행할 수 있습니까?

표준 설치 및 구성을 갖춘 Linux 시스템을 고려하십시오 sudo. 즉, root모든 명령을 다른 사용자로 실행할 수 있으므로 다음 명령을 고려하십시오.

sudo -u user1 -g group1 some_program

물론 some_programEUID로 실행하고 싶습니다.user1 그리고EGID로 group1. 그러나 나는 user1이것이 실제로 회원인 경우에만 작동한다는 것을 어려운 방법으로 배웠습니다 . 이 문제를 좀 더 깊이 조사해 봐야 group1할 것 같습니다 . man sudo명령줄 옵션에 대한 설명에서 -g:

[...] sudoers 정책을 사용하면 -P 옵션을 사용하지 않는 한 모든 대상 사용자 그룹을 -g 옵션으로 지정할 수 있습니다.

이것은 매우 불편합니다. sudo특히 서비스나 프로그램이 임의의 UID 및 GID로 실행되고 해당 사용자가 해당 그룹의 구성원이 아닌 경우 테스트 목적 으로 이를 자주 사용합니다 . 이런 경우에는 테스트하기 전에 sudo해당 사용자를 해당 그룹의 구성원으로 만들어야 하며 , 테스트가 완료된 후에는 해당 작업을 복원하는 것을 잊지 말아야 합니다.

따라서 질문은: 임의의 UID 및 GID를 root사용하여 프로그램을 실행할 수 있는 설정이나 구성이 있습니까?sudo일치하지 않는 것? 공통 메커니즘을 제공하는 솔루션에만 관심이 있습니다.모든 프로그램, UID 및 GID. 즉, 특정 프로그램, UID 또는 GID 목록을 여기에 넣는 것은 /etc/sudoers옵션이 아닙니다.

sudo가능한 솔루션 중 하나는 이를 가능하게 하는 대체 정책 공급자가 될 수 있습니다 . 그러나 설치 및 구성 방법을 배우는 것은 어려울 수 있으며, 다른 솔루션이 없더라도 이 경로를 선택할지 확신할 수 없습니다. 그리고, 저는 지금까지 이런 것을 발견하지 못했습니다.

업데이트 1 (2022-01-27)

문제의 시스템은 이 글을 쓰는 시점에 사용 가능한 모든 패치로 업데이트된 Debian Buster를 실행합니다. SELinux는아니요설치하다. 여기 내 /etc/sudoers파일이 있습니다(생략됨)오직주석 및 빈 줄):

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
ipupdate ALL = (root) NOPASSWD: /root/scripts/asterisk-external-ip

나는 현재 마지막 줄이 질문과 관련이 없다고 생각하며 주의가 산만해지는 것을 최소화하기 위해 제거해야 할 것 같습니다. 반면에, 때로는 "명확성을 위해 제거된" 겉보기에 중요하지 않은 부분이 실제로 해당 오류를 유발한다는 것을 알게 되었습니다.

답변1

다양한 대상 그룹에서 프로그램을 실행하는 것이 -g이 옵션의 핵심입니다. 그리고 -u결합에는 제한이 없습니다 -g.

sudoers 정책에서는 -P 옵션을 사용하지 않는 한 모든 대상 사용자 그룹을 -g 옵션으로 지정할 수 있습니다.

명확하게 설명되지는 않지만 이 문장은 sudo가 기본적으로 사용할 수 있는 기능을 나타냅니다. 이는 sudo를 사용한다는 의미가 아닙니다. sudo가 유용하다추가의sudoers임의의 사용자 및 그룹 집합을 허용하는 파일의 정책입니다 .

루트에는 특별한 권한이 부여되지 않습니다. 루트 또는 "sudoer"로 실행할 수 있는 경우 sudo -u user1sudoers 파일에 이를 허용하는 규칙이 있기 때문입니다. 어떤 이유로(아마도 관리자가 업데이트할 생각을 하지 않았기 때문에) 예제 sudoers파일에서 이 규칙은 다음과 같습니다.

root        ALL = (ALL) ALL
%wheel      ALL = (ALL) ALL

이는 사용자가 이미 속한 그룹 내에서 기본 그룹을 지정하기 위해 제한된 용도 로만 허용되지만 sudo -u허용되지는 않습니다 . 사용자 권한뿐만 아니라 그룹 권한의 상승을 허용하려면 이러한 규칙(또는 또는 등을 사용하는 것과 같이 시스템에서 동등한 규칙 )을 다음으로 변경하십시오.sudo -g-g%admin%sudobinarus

root        ALL = (ALL:ALL) ALL
%wheel      ALL = (ALL:ALL) ALL

이는 Debian과 같은 일부 배포판의 기본 설정입니다.

관련 정보