나는 uid와 기본 gid를 사용하지만 추가 보조 그룹을 사용하여 프로그램을 실행할 수 있는 sudo(또는 sudo에서 실행할 수 있는 것)와 같은 것을 찾고 있습니다.
답변1
경고 #1: 이는 또 다른 "해킹" 접근 방식입니다.
경고 #2: 모든 애플리케이션/스크립트가 이 모호한 uid/gid를 처리할 수 있는 것은 아닙니다.
동일한 uid/gid를 가진 여러 사용자를 useradd
허용 하는 옵션 과 추가 그룹을 지정하는 옵션을 사용하여 동일한 uid 및 gid를 가진 새 사용자를 생성합니다. 예를 들어:--non-unique
--groups
useradd --uid 1001 --gid 1001 --groups 1002,1003 --shell /bin/bash \
--home /home/cloneduser cloneduser
그런 다음 새 사용자로 프로그램을 실행해야 합니다. 디버깅하는 데 사용하는 것이 좋습니다 id
.
답변2
perl
예를 들어 권한이 있는 프로세스에서 다음 명령을 사용하여 유효한 실제 uid/gid와 보충 ID 목록을 설정할 수 있습니다.
$ sudo perl -e '$( = $) = "1 2 3"; $> = $< = 4; exec @ARGV' id
uid=4(sync) gid=1(daemon) groups=1(daemon),2(bin),3(sys)
perldoc -v '$)'
자세한 내용은 ...을 참조하세요 .
답변3
첨부된 그룹을 기본 그룹(즉, 생성된 모든 새 파일에 대한 그룹)으로 할지 아니면 해당 그룹이 이 사용자에 대한 보조 그룹이 아닌지는 확실하지 않습니다.
첫 번째 경우, 이미 그룹의 구성원인 경우 "newgrp" 및 "sg"라는 두 가지 명령을 사용할 수 있습니다. 둘 다 동일한 결과를 얻지만 하나는 새 gid를 사용하여 대화형 셸을 실행하고 두 번째는 명령만 실행합니다.
두 번째 경우에는 groupadd 또는 groupmod 명령을 사용하여 그룹의 비밀번호를 설정해야 하며, "newgrp" 또는 "sg"를 사용할 때 명령을 실행하기 전에 해당 비밀번호를 입력하라는 메시지가 표시됩니다.
다른 간단한 접근 방식은 실행 파일의 그룹 소유자를 변경하고 setgid 비트를 설정하는 것입니다. 이 비트에 대한 자세한 내용은 chmod 매뉴얼 페이지에 있습니다.
답변4
no_new_privs
다음 명령을 사용하여 임의 프로세스 권한 설정(UID, GID 보충 그룹, 기능, 비트, securebits, SELinux 레이블, AppArmor 프로필)을 설정할 수 있습니다.setpriv
유틸리티 명령은 다음에서 제공됩니다.util-linux
모으다.
새 프로세스의 보조 그룹에 명명된 그룹을 임시로 추가하려면 setpriv
다음 명령과 함께 사용할 수 있습니다 sudo
.
function with_group() {
local -r target="$1"
shift
sudo --preserve-env setpriv --reuid "$(id -u)" --regid "$(id -g)" --groups "$(id -G | tr ' ' ','),$(getent group "$target" | cut -d: -f3)" "$@"
}
docker
이는 루트로 명령을 실행하여 임시로 그룹을 보조 그룹으로 추가하는 데 사용할 수 있습니다 .
with_group docker docker-compose ps