Package users

Pełna kontrola i zarządzanie systemem za pomocą metody
Package User

Instalacja pakietu (w sensie spakowanych źródeł programu) w LFS to w skrócie wydanie trzech poleceń:
configure, make, make install
Po tym ostatnim standardowo instalowane pliki są kopiowane do różnych miejsc w drzewie plików systemu.

Każdy kto w ten sposób instalował oprogramowanie doskonale zdaje sobie sprawę z mankamentów:

  • -brak kontroli który plik należy do którego pakietu
  • -nie ma możliwości odinstalowania pakietu, który nie dostarcza funkcjonalności make uninstall (lub jest to zadanie trudne do wykonania w sensownym czasie)

 

Menadżery pakietów
Dystrybucje radzą sobie z tym problemem w różny sposób – zobacz przegląd rozwiązań w rozdziale 6 książki. Najczęściej spotykanym rozwiązaniem jest korzystanie z menadżerów pakietów rpm lub deb -sprawdzają się od lat w wielu dystrybucjach. Można im jednak zarzucić, że pakiety instalowane są z konta root (przynajmniej domyślnie):

  • – mogą zainstalować bez ostrzeżenia programy z ustawioną flagą setuid root
  • – bez poinformowania mogą nadpisywać pliki zainstalowane przez inne pakiety

 

Poza tym ich funkcjonalność, sposób działania nie każdemu musi odpowiadać.

Inne podejście
Twórca LFS zaproponował podejście do zarządzania instalowanym oprogramowaniem wykorzystujące wbudowane, typowe dla systemów UNIX mechanizmy. Metoda nazwana „Package Users” korzysta z systemowych kont użytkowników i grup.

Przykładowo chcemy zainstalować pakiet Lynx. Tworzymy w tym celu użytkownika lynx i grupę lynx. Przelogowujemy się na tego użytkownika (np. su – lynx), pobieramy źródła programu Lynx i z tego konta wydajemy standardowe configure, make, make install. W efekcie WSZYSTKIE instalowane pliki są widoczne w systemie jako własność użytkownika lynx i grupy lynx.

sekol@sekol:~$ ls -l /usr/bin/lynx-rwxr-xr-x 1 lynx lynx 1317296 2010-05-09 18:17 /usr/bin/lynx

Oczywiście najistotniejsze jest tutaj konto użytkownika. Można utworzyć grupę np. przegladarki-www i instalować wszystkie przeglądarki z przynależnością do tej grupy.

Pierwszy problem pojawia się gdy kolejny instalowany pakiet chce skopiować swoje pliki do katalogu utworzonego wcześniej przez innego użytkownika (inny pakiet). Przykładowo instalacja Lynx tworzy katalog /usr/share/web. Właścicielem i grupą tego katalogu jest lynx:lynx. Teraz instalujemy Firefox który również chce umieścić swoje pliki w katalogu /usr/share/web. Oczywiście kończy się to komunikatem błędu o braku uprawnień.

Rozwiązaniem tej sytuacji jest zmiana grupy tego rodzaju wspólnych katalogów na utworzoną dodatkowo grupę install.

chgrp install /usr/share/web \\\\
&& chmod g+w,o+t /usr/share/web

Następnie należy zadbać by każdy użytkownik/pakiet należał do tej grupy. Konieczne jest również ustawienie „bitu lepkości” (sticky bit) dla takiego katalogu. Użytkownicy będą mogli zapisywać do niego ale nie będą mogli kasować plików innych użytkowników, tylko swoje własne.

Korzyści i możliwości płynące z tego rozwiązania
– Od razu za pomocą prostych poleceń (np. ls -l) widać „czyj” jest interesujący nas plik
– Instalując pakiet z poziomu zwykłego użytkownika mamy pewność, że nie ingerujemy w niebezpieczny sposób w system, nie nadpisujemy plików systemowych, należących do innych programów, nie instalujemy nieświadomie plików z ustawioną flagą setuid rot
– W łatwy sposób możemy „odinstalować” pakiet. Po prostu znajdujemy wszystkie pliki na dysku należące do danego użytkownika (np lynx i usuwamy je.

Zależności
Niestety to rozwiązanie nie pilnuje za nas zależności między pakietami tak jak to mają w zwyczaju menadżery pakietów rpm czy deb. O ile podczas instalacji zostaniemy poinformowani o niespełnionych zależnościach to usuwając pliki należące do danego użytkownika możemy bez żadnego ostrzeżenia zerwać zależności. Skutkiem będzie niemożliwość uruchomienia innego, zależnego programu.’

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *