새 패키지에서 무료로 제공되는 UID/GID

새 패키지에서 무료로 제공되는 UID/GID

읽고 나서https://unix.stackexchange.com/a/222376/246754rpm은 uid/gid가 서로 충돌하지 않도록 어떻게 보장합니까?

내가 찾고있는 것은 다음과 같습니다https://github.com/NixOS/nixpkgs/blob/68196a61c26748d3e53a6803de3d2f8c69f27831/nixos/modules/config/users-groups.nix#L640-L642(비교하려고)

나는 가상 머신을 구축하고 /etc/passwd를 사용하여 얻은 uid를 확인해야 했습니다. 174가 기본값이 아니기 때문에 내 요구 사항을 충족하지 않습니다. 마찬가지로 nix는 0과 같은 루트용 uid도 예약합니다.https://github.com/NixOS/nixpkgs/commit/dba1d48b7897c49e5df9430c6b60f17e03ec361eVM을 구축하지 않고도 목록을 볼 수 있고, cli를 사용하여 쿼리할 수 있습니다. 또한 ID 할당자가 있으므로 관리할 필요가 없습니다.

/etc/passwd를 다시 빌드할 때 실행되는 스크립트입니다.

추신: 연결된 질문이 RPM에 관한 것이기 때문에 rpm-spec을 태그했지만 문제는 apt, yum, pacman, Brew와 같은 다른 도구에서 발생할 가능성이 더 높습니다... 다른 시스템에 대해 알고 계시다면 다른 A를 만드십시오. 질문과 그에 대한 답변(Q&A 스타일로 유지) 또는 댓글

답변1

일반적으로 우리는 UID/GID가 아닌 이름으로 사용자/그룹을 참조합니다.

자체 사용자가 있는 패키지는 useradd또는이라는 레이블을 사용합니다. 이렇게 하면 시스템 사용자 범위(보통 100-999)에서 사용되지 않은 UID/GID를 가진 새 사용자가 생성됩니다.adduser--system

/var/lib/dpkg/info/openssh-server.postinst예를 들어, 저는 데비안 시스템을 사용하고 있으며 (설명한 RPM-SPEC 스크립틀릿과 동등한 데비안 시스템) 에 존재합니다 .

if ! getent passwd sshd >/dev/null; then
    adduser --quiet --system --no-create-home --home /run/sshd --shell /usr/sbin/nologin sshd
fi

OpenSSH는 사용자의 UID/GID를 하드코딩하지 않으며 sshd해당 이름을 찾습니다.

관련 정보