Obsoletes czy nie obsoletes
Jakub Bogusz
qboosh w pld-linux.org
Sob, 23 Sie 2003, 22:18:04 CEST
On Thu, Aug 21, 2003 at 10:28:39PM +0200, Paweł Gołaszewski wrote:
> On Sat, 16 Aug 2003, Radoslaw Zielinski wrote:
[...]
> > >> - co z userdel http w %postun ?
> > > To trzeba rozwiązać bardziej ogólnie... Pakiety z użytkownikami to
> > > przesada; ale jakiś mechanizm śledzenia pakietów używających
> > > użytkowników/grup w rpm-ie (może być przy pomocy osobnych skryptów,
> > > bez ruszania kodu) by się przydał.
> > [...]
> >
> > Mnie się ten pomysł podoba. Widziałbym to np. tak:
> >
> > Baza: /var/lib/rpm/service-users.db, format: "<user>:<uid>:<usługi>",
> > gdzie poszczególne usługi byłyby oddzielone przecinkami. Analogicznie
> > /usr/lib/rpm/service-groups.db.
> ^^^^^
> chyba var :)
A to zależy, czy to baza aktualnego stanu użytkowników, czy wszystkich
potencjalnych dla wszystkich dystrybucyjnych pakietów.
> > Międzymordź: /usr/lib/rpm/<cośtam>, uruchamiany w dwóch trybach,
> > rejestrowania i wyrejestrowywania;
>
> Nie wiem czy nie powinna powstać 3 tryb, czyli check - sprawdzanie
> nieużywanych userów.
Oraz używanych nieistniejących oraz zgodności danych z oczekiwanymi
przez aplikację.
> > np (nie mam pomysłu na nazwę):
> >
> > # <cośtam> -R -u http:51 -s apache # rejestracja usera http dla apache
> > # <cośtam> -R -g http:51 -s apache # rejestracja grupy http dla apache
> >
> > Jeśli zwróci 0, to trzeba założyć, jeśli 1, już jest. Wyrejestrowanie:
> >
> > # <cośtam> -U -u http:51 -s apache
> > # <cośtam> -U -g http:51 -s apache
> >
> > Jeśli zwróci 0, można usunąć. Podawanie/sprawdzanie uid/gid mogłoby być
> > opcjonalne; te pola mogłyby istnieć tylko dla informacji administratora.
Same skrypty mogą od razu użytkowników zakładać i usuwać.
Przy okazji uruchomić update-db i kopnąć nscd w razie potrzeby (chociaż
to powinno być w samych {user,group}{add,del} - o ile pierwsze w końcu
chyba zostało popoprawiane, to drugie nie).
Sprawdzanie uid/gid - chodzi o aktualne warunki w %pre?
Można by zrobić z tego opcję w sysconfig (abort/warn/ignore, z domyślnym
abort) - tylko trzeba pamiętać, że aktualnie część pakietów używa
liczbowych uidów/gidów - więc może być problem...
Komunikaty o zakładaniu/usuwaniu użytkowników zrobiłbym co najwyżej
opcjonalne (mnie one drażnią - jak i inne przejawy zbędnej gadatliwości
skryptów przy instalacji pakietów - informacje o dodawaniu/usuwaniu
użytkowników/grup i tak idą do logów).
> > Jeśli będzie zgoda na tego typu rozwiązanie (i specyfikacja), to w
> > wolnym czasie napiszę helpera.
>
> hhhmmm....
> Zastanawiam się czy jednak to nie powinna być gotowa baza userów z
> osobnego pakietu (jakieś rpm-usersdb). Wydaje mi się, że tak będzie
> lepiej, w specu będzie tylko np.:
> <cośtam> -U -u http -s apache
> Będzie to rejestrowało użytkownika.
>
> Całe dane usera będą w bazie usersdb, np. /usr/lib/rpm/(users|group).db.
> Zmiana usera to będzie jedna korekta w bazie, a nie dłubanie we wszystkich
> specach.
Tylko te zmiany w bazie wymagają też zmian w systemie (w %pre lub
triggerze nowej wersji pakietu), jeśli pakiet już został zainstalowany.
No i zmiana uida/gida wymaga chown plików należących do danego
użytkownika/grupy i być może modyfikacji plików konfiguracyjnych...
> Teraz pytanie - jak takie rozwiązanie zachowa się w praktyce? Mam na myśli
> sytuację np.: wymiana http z jednego na drugi.
W porządku - w %pre nowo instalowanego pakietu licznik użycia zostanie
zwiększony do 2[1], w %postun usuwanego zmniejszony do 1 - czyli użytkownik
cały czas będzie istniał.
[1] obojętne, czy będzie reprezentowany przez pojedynczą liczbę, czy np.
listę nazw pakietów
--
Jakub Bogusz http://cyber.cs.net.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl