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

Jakub Bogusz qboosh w pld.org.pl
Sob, 24 Sie 2002, 00:01:59 CEST


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...


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).


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



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