Reservando um intervalo de UIDs anônimos; / etc / subuid

2

Eu preciso de um intervalo de uids (digamos, alguns milhares) para uma ferramenta de raiz setuid usar. Existe um protocolo para registrar tal intervalo ou eu apenas escolho um intervalo e espero que nenhum outro programa use esses uids?

(Eu prefiro não criar não desordem /etc/passwd com isso.)

Me deparei com /etc/subuid (entre outros lugares documentados no link ) e parece que algo semelhante acontece. O que exatamente é /etc/subuid e posso usá-lo para registrar um intervalo para minha ferramenta setuid?

Parece que esse /etc/subuid stuff é usado pelo docker para algum tipo de mapeamento de uid. Se eu criar um novo usuário para meu aplicativo, reservarei um intervalo de subida para ele por meio de /etc/subuid e, em seguida, não usei com o docker, seria uma boa maneira de informar ao restante do sistema reservou um intervalo de uid?

    
por PSkocik 24.06.2017 / 10:29

1 resposta

5

Há um hack e, em seguida, há uma maneira de fazer isso correto .

A maneira hacky é aumentar UID_MIN e GID_MIN em /etc/login.defs para que seus UIDs reservados fiquem entre SYS_UID_MAX e UID_MIN e GIDs (se houver) entre SYS_GID_MAX e GID_MIN . Dessa forma, as ferramentas normais ( useradd , adduser , usermod , etc.) não as usam para novas contas de usuário, a menos que você as force (especificando explicitamente o novo UID e / ou GID). Pode ser necessário remapear todos os UIDs existentes nesse novo intervalo de lacunas para o intervalo UID_MIN .. UID_MAX e os GIDs para o intervalo GID_MIN .. GID_MAX , para que as ferramentas os tratem como contas de usuário normais. / p>

O caminho certo é além disso configurar NSS (e PAM, geralmente) para ver esses usuários reservados, para que as ferramentas não fiquem confusas.

A maneira mais simples de fazer isso é usar o módulo libnss-extrausers NSS e pam_extrausers do módulo PAM, para que você possa colocar esses usuários especiais em /var/lib/extrausers/passwd (e entradas sem senha em /var/lib/extrausers/shadow ), mais Opcionalmente, agrupe informações em /var/lib/extrausers/groups . Esses módulos devem estar disponíveis em todas as distribuições comuns do Linux.

Observe que, se você adicionar esses usuários ao NSS / PAM, poderá estender SYS_UID_MAX e SYS_GID_MAX para cobrir esses usuários reservados, apenas como precaução: Veja, eu não verifiquei se / quais As ferramentas listam apenas os usuários UID_MIN .. UID_MAX ou simplesmente excluem os usuários SYS_UID_MIN .. SYS_UID_MAX . Eu suspeito que há muitos programadores que erroneamente acreditam que os dois conjuntos são complementos um do outro, portanto, tratar esses UIDs / GIDs reservados como contas do sistema é provavelmente a opção mais segura.

    
por 29.06.2017 / 13:09