연결된 질문에서 언급한 대로 특정 사용자 그룹을 사용하여 명령을 실행하려고 합니다(특정 그룹으로 프로세스를 실행하는 방법은 무엇입니까?) Alpine Linux에서는 시스템에 "찾을 수 없음"이라고 표시됩니다.
~/work $ sg
sh: sg: not found
shadow
패키지를 확인한 apk info -a shadow
결과 다음 명령이 존재하는 것 같습니다 sg
.
[...]
cmd:pwunconv
cmd:sg
cmd:su
[...]
shadow
Alpine의 패키지 참조:https://pkgs.alpinelinux.org/contents?branch=edge&name=shadow&arch=x86&repo=community
답변1
오늘 최신 알파인(3.16.0) 이미지를 사용하여 동일한 오류가 발생했습니다. 주문이 sg
다시 사라졌습니다. 3.15.4로 다시 전환해야 했습니다.
docker run --rm alpine:3.15.4 sh -c "apk add shadow && sg root -c id"
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
작동하지만 3.16.0에서는 작동하지 않습니다.
docker run --rm alpine:3.16.0 sh -c "apk add shadow && sg root -c id"
sh: sg: not found
답변2
sg가 섀도우 로그인 패키지로 마이그레이션됨
apk add shadow-login
https://pkgs.alpinelinux.org/package/v3.16/community/x86_64/shadow-login
이 검색 도구를 사용하여 바이너리를 찾을 수 있습니다.
https://pkgs.alpinelinux.org/contents?file=sg&path=&name=&branch=v3.16&repo=community&arch=x86_64
답변3
Alpine Linux는 설치 공간이 매우 작도록 설계되었으며(원래 임베디드 Linux용으로 설계됨) 모든 쉘 명령은 다음과 같습니다."바쁨 상자". 컨테이너와 함께 사용하기 어렵게 만드는 흔하지 않은 라이브러리와 같은 다른 특성도 있습니다.
즉, 컨테이너 이미지를 빌드할 때 모든 파일의 ID와 그룹을 설정하고 모든 ID로 컨테이너를 실행할 수 있으므로 컨테이너에서 이 작업을 수행해야 하는 이유가 무엇인지 궁금합니다.