Dostałem częściowo kompletną specyfikację RPM dla usługi, którą piszemy. Dochodzi do tworzenia wymaganych katalogów, kopiowania plików, ustawiania uprawnień itp., Ale nie tworzy wymaganego konta systemowego, pod którym usługa będzie działać. Powiedziano mi, że najlepiej zadbać o to RPM, więc dodałem
Requires(pre): /usr/sbin/useradd
%pre
useradd -r -d /path/to/program -s /bin/false myservice
Udaje się to utworzyć konto użytkownika (i powiązaną grupę), więc później, gdy próbuje ustawić własność / uprawnienia do plików usługi, również się to udaje.
Mój obecny problem to: a) jeśli konto użytkownika już istnieje, instalacja RPM kończy się niepowodzeniem, ponieważ useradd
kończy się niepowodzeniem (ponieważ użytkownik już istnieje); oraz b) Nie wiem, jak rpm -e myservice
usunąć powiązanego użytkownika i grupę.
user-accounts
services
rpm
Coderer
źródło
źródło
Odpowiedzi:
Naprawdę rozwiązałem to samodzielnie, patrząc na inne specyfikacje RPM, które robiły podobne rzeczy. Jeśli chcesz tylko dodać użytkownika (warunkowo), skorzystaj z linku Ignacio. Ja to zrobiłem:
Zapewnia to, że RPM „czyści po sobie”, ale nadal zapewnia możliwość instalacji, nawet jeśli konto już istnieje.
źródło
Każda z dwóch poprzednich odpowiedzi jest gotowa do produkcji, ponieważ metody te usuną użytkownika, jeśli pakiet zostanie zaktualizowany. Yum instaluje nowy pakiet, a następnie usuwa stary pakiet. To pozostawi cię bez użytkownika. Nie fajnie!
Zamiast tego użyj tej metody:
źródło
Odpowiedź Coderera jest dobra, ale drugie polecenie wstępne wyświetla błąd w Centos 7. Grupa musi zostać określona.
Dodałem także przekierowanie do / dev / null, aby zignorować niechciane echa.
źródło