Złe praktyki? (symlinki i modyfikowanie plików)

Jakub Bogusz qboosh w pld.org.pl
Sob, 24 Sie 2002, 23:28:54 CEST


On Sat, Aug 24, 2002 at 09:03:06PM +0200, Tomasz Kłoczko wrote:
> On Sat, 24 Aug 2002, Jakub Bogusz wrote:
> > Zauważyłem w specach dwie praktyki, które mogą powodować problemy.
> > 
> > Pierwsza to względne symlinki między różnymi katalogami.
> > Np. /usr/lib/libm.so -> ../../lib/libm.so.6.
> > I co się dzieje, jeśli w danym systemie /usr jest symlinkiem do katalogu
> > o innym poziomie zagłębienia? Link jest zepsuty.
> > (swoją drogą - o ile wg FHS /usr może być symlinkiem, to nie wiem do
> > czego - dodatkowych katalogów w / (typu /vol) nie można robić, a /mnt
> > jest do tymczasowego montowania)
> > 
> > Bezwzględne symlinki też mają wadę - jeśli podmontujemy rootfs gdzieś
> > indziej (np. przy ratowaniu systemu), to linki nie działają. Ale nie ma
> > to chyba dużego znaczenia - żeby coś więcej zrobić w takim systemie,
> > i tak robi się chroot...
> 
> Primo: jednak jak najmniej dowiązań. Reszta dylematów wynikajacych z 
> takeigo podejscia i istnienai dowiazań powinno sie juz dużo łatwiej dawać 
> analizować pod kontem tgo jak to rozstrzygać.

Tia, zwłaszcza lib*.so -> lib*.so.* :>

W samym /usr/lib:
$ ls -l /usr/lib/*.so | grep '\.\.' | wc -l
     24

plus dwa linki wymagane przez FHS:
/usr/lib/sendmail -> ../sbin/sendmail
/usr/lib/X11 -> ../X11R6/lib/X11

plus coś dziwnego, co powinno być poprawione (to jest w tym samym katalogu!):
/usr/lib/libbsd.a -> ../../usr/lib/libbsd-compat.a

> > Druga rzecz - modyfikowanie plików konfiguracyjnych sedem, grepem itp.
> > Przykład z apache-mod_ssl.spec:
> > 
> > grep -E -v "^Include.*mod_ssl.conf" %{_sysconfdir}/httpd/httpd.conf > \
> >         %{_sysconfdir}/httpd/httpd.conf.tmp
> > mv -f %{_sysconfdir}/httpd/httpd.conf.tmp %{_sysconfdir}/httpd/httpd.conf
> > 
> > Nowo stworzony plik ma uprawnienia zależne od aktualnego umaska...
> > Co zamiast mv?
> > Proponuję "cp -f httpd.conf.tmp httpd.conf && rm -f httpd.conf.tmp".
> > Może być jeszcze cat && rm, ale wtedy mogą być problemy z symlinkami.
> > A jeśli już mv, to z odpowiednim chmod (i ew. chown, jeśli plik nie
> > należy do root.root).
> 
> Jeżeli kluczowa rzeczą jest tu umaska to należałoby raczej skupić się na
> tym punkcie.
> IMHO rozwiązania są dwa (idące właśnie tym śladem):
> 
> - dodawać jawnie w pierwszej linijce skryptu "umask 022" (co w części 
>   meisjc już jest robione) tam gzdei są tworzone jakieś pliki,
> 
> - zmodyfikować rpm-a tak żeby dla skryptów było zawsze ustawione stałe,
>   wszem i wobec wiadome umask (np. 022) ustawialne jakims makrem.
> 
> To drugie wydaje się najlepsze ibezie załtwiać sprawę neizaleznie od tego 
> w jaki sposób bedą tworzone pliki w skryptach.

Nie ma tak łatwo. Chyba zakładasz (błędnie), że wszystkie pliki
modyfikowane w skryptach rpm-a mają mieć te same prawa. Tak nie jest.
Poza tym niektóre pliki muszą mieć innego właściciela (lub grupę - nieco
częściej).


-- 
Jakub Bogusz    http://prioris.mini.pw.edu.pl/~qboosh/



Więcej informacji o liście dyskusyjnej pld-devel-pl