Recebi uma especificação RPM parcialmente completa para um serviço que estamos escrevendo. Chega ao ponto de criar os diretórios necessários, copiar arquivos, definir permissões etc., mas não cria a conta de sistema necessária na qual o serviço será executado. Foi-me dito que é melhor para o RPM cuidar disso, então eu adicionei
Requires(pre): /usr/sbin/useradd
%pre
useradd -r -d /path/to/program -s /bin/false myservice
Isso consegue criar a conta de usuário (e o grupo associado), e, posteriormente, quando ele tenta definir a propriedade / permissões nos arquivos do serviço, também obtém êxito.
Meu problema atual é: a) se a conta do usuário já existe, a instalação do RPM falha porque useradd
falha (porque o usuário já existe); e b) não sei como rpm -e myservice
remover também o usuário e o grupo associados.
user-accounts
services
rpm
Coderer
fonte
fonte
Respostas:
Na verdade, eu resolvi isso de forma independente, observando outras especificações de RPM que faziam coisas semelhantes. Se você quiser apenas adicionar um usuário (condicionalmente), use o link do Ignacio. Eu fiz isso:
Isso garante que o RPM "seja limpo depois de si mesmo", mas ainda permita a instalação, mesmo que a conta já exista.
fonte
Qualquer uma das duas respostas anteriores está pronta para produção, pois esses métodos excluirão o usuário se o pacote for atualizado. O Yum instala o novo pacote e remove o pacote antigo. Isso deixará você sem um usuário. Não é legal!
Use este método:
fonte
A resposta do Coderer é boa, mas o segundo pré-comando me dá um erro no Centos 7. O grupo deve ser especificado.
Eu adicionei também redirecionar para / dev / null para ignorar ecos indesejados.
fonte