일련의 익명 UID를 유지합니다. /etc/subuid

일련의 익명 UID를 유지합니다. /etc/subuid

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.defsSYS_UID_MAXUID_MINSYS_GID_MAXGID_MINuseraddadduserusermodUID_MINUID_MAXGID_MINGID_MAX

올바른 방법은또한구성국가안보국(보통 PAM) 도구가 혼동되지 않도록 예약된 사용자를 검토하세요.

가장 쉬운 방법은 libnss-extrausersNSS 모듈과 pam_extrausersPAM 모듈을 사용하는 것입니다. 이를 통해 이러한 특수 사용자를 에 넣을 수 있고 /var/lib/extrausers/passwd(암호 없는 항목도 포함 /var/lib/extrausers/shadow) 선택적으로 그룹 정보를 넣을 수 있습니다 /var/lib/extrausers/groups. 이러한 모듈은 모든 일반적인 Linux 배포판에서 사용할 수 있습니다.

이러한 사용자를 NSS/PAM에 추가하는 경우 예방 조치로 예약된 사용자를 확장 SYS_UID_MAX하고 재정의할 수 있습니다. 알다시피 어떤 도구가 .. 사용자만 나열하는지, 아니면 사용자 만 SYS_GID_MAX나열하는지 확인하지 않았습니다. 제외해야 합니다 . 많은 프로그래머들이 이 두 세트가 상호보완적이라고 잘못 믿고 있는 것 같습니다. 따라서 예약된 UID/GID를 시스템 계정으로 취급하는 것이 아마도 가장 안전한 선택일 것입니다.UID_MINUID_MAXSYS_UID_MINSYS_UID_MAX

관련 정보