setuid-root 도구를 사용하려면 다양한 uid(예: 수천 개)가 필요합니다. 그러한 범위를 등록하는 프로토콜이 있습니까, 아니면 범위를 선택하고 다른 프로그램이 해당 uid를 사용하지 않기를 바랄까요?
(이것으로 혼동을 일으키고 싶지 않습니다 /etc/passwd
.)
나는 /etc/subuid
(문서에 기록된 다른 사람들과 함께)https://www.mankier.com/8/usermod) 그리고 비슷한 일을 하는 것 같습니다. 정확히 무엇입니까 /etc/subuid
? 이것을 사용하여 내 setuid 도구의 범위를 등록할 수 있나요?
/etc/subuid
이것은 일종의 uid 매핑을 위해 docker에서 사용되는 것 같습니다 . 내 애플리케이션에 대한 새 사용자를 생성하는 경우 /etc/subuid
다음을 통해 하위 범위를 예약하세요.아니요이것을 docker와 함께 사용하면 내가 uid 범위를 예약했음을 시스템의 나머지 부분에 알리는 좋은 방법입니까?
답변1
해킹이 있고 이를 수행할 수 있는 방법이 있습니다.옳은.
해킹은 유지하는 UID가 과 와 사이에 있도록 UID_MIN
과 를 높이는 것 GID_MIN
입니다 . GID(있는 경우)는 과 사이에 있습니다 . 이렇게 하면 일반 도구( , 등 )는 강제로 사용하지 않는 한(새 UID 및/또는 GID를 명시적으로 지정하여) 새 사용자 계정에 이를 사용하지 않습니다. 이 새로운 간격 범위의 기존 UID를 .. 범위로, GID를 .. 범위로 다시 매핑하여 도구가 이를 일반 사용자 계정으로 처리하도록 해야 할 수도 있습니다./etc/login.defs
SYS_UID_MAX
UID_MIN
SYS_GID_MAX
GID_MIN
useradd
adduser
usermod
UID_MIN
UID_MAX
GID_MIN
GID_MAX
올바른 방법은또한구성국가안보국(보통 PAM) 도구가 혼동되지 않도록 예약된 사용자를 검토하세요.
가장 쉬운 방법은 libnss-extrausers
NSS 모듈과 pam_extrausers
PAM 모듈을 사용하는 것입니다. 이를 통해 이러한 특수 사용자를 에 넣을 수 있고 /var/lib/extrausers/passwd
(암호 없는 항목도 포함 /var/lib/extrausers/shadow
) 선택적으로 그룹 정보를 넣을 수 있습니다 /var/lib/extrausers/groups
. 이러한 모듈은 모든 일반적인 Linux 배포판에서 사용할 수 있습니다.
이러한 사용자를 NSS/PAM에 추가하는 경우 예방 조치로 예약된 사용자를 확장 SYS_UID_MAX
하고 재정의할 수 있습니다. 알다시피 어떤 도구가 .. 사용자만 나열하는지, 아니면 사용자 만 SYS_GID_MAX
나열하는지 확인하지 않았습니다. 제외해야 합니다 . 많은 프로그래머들이 이 두 세트가 상호보완적이라고 잘못 믿고 있는 것 같습니다. 따라서 예약된 UID/GID를 시스템 계정으로 취급하는 것이 아마도 가장 안전한 선택일 것입니다.UID_MIN
UID_MAX
SYS_UID_MIN
SYS_UID_MAX