Następna strona Poprzednia strona Spis treści

4. Kompilacja programów.

4.1 Rozpakowywanie archiwów.

Pierwszym krokiem po ściągnięciu programu jest rozpakowanie go. Pakiet jest w formie starowanej i skompresowany programem gzip, tak więc najpierw przenieś go do /usr/src, a potem napisz:

tar -xzvf shadow-current.tar.gz

Powstanie katalog /usr/src/shadow-RRMMDD, w którym znajdą się źródła pakietu.

4.2 Konfiguracja w pliku config.h

Pierwszą rzeczą jaką musisz zrobić, to skopiować odpowiednie pliki Makefile i config.h:

cd /usr/src/shadow-RRMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h

Potem powinieneś przejrzeć plik config.h. Zawiera on definicje dla niektórych opcji konfiguracyjnych. Jeśli używasz zalecanego pakietu, to polecam wyłączenie na początek przesłanianie haseł grup.

Domyślnie opcja ta jest włączona. Aby to wyłączyć, wyedytuj plik config.h i zmień #define SHADOWGRP na #undef SHADOWGRP. Na początek proponuje to wyłaczyć, a później jak będziesz chciał haseł dla grup i administratorów grup, to możesz przekompilować pakiet. Jeśli zostawisz tę opcję włączoną musisz stworzyć plik /etc/gshadow.

Włączanie opcji pozwalającej na dłuższe hasła nie jest zalecane - patrz wyżej.

Opcja AUTOSHADOW została zaprojektowana, aby umożliwić działanie programom, które ignorują przesłanianie haseł. Teoretycznie brzmi to dobrze, ale niestety nie działa poprawnie. Jeśli właczysz tę opcję i program zostanie uruchomiony z przywilejami "root-a", może on wywołać funkcję getpwnam() jako "root", a później zapisać zmienioną pozycję spowrotem do pliku /etc/passwd (i hasło nie jest już przesłonięte).

Do takich programów zaliczają się chfn i chsh. (Nie możesz obejść tego przez zamianę rzeczywistego uid z efektywnym uid przed wywołaniem funkcji getpwnam() ponieważ root także może używać chfn i chsh.)

To samo ostrzeżenie jest słuszne jeśli kompilujesz bibliotekę libc, która posiada opcję SHADOW_COMPAT, która robi to samo. Nie powinna ona być używana! Jeśli zakodowane hasła zaczną się pojawiać spowrotem w pliku /etc/passwd, to to właśnie jest przyczyną.

Jeśli używasz wcześniejszej wersji biblioteki niż 4.6.27, będziesz musiał zrobić trochę więcej zmian w pliku config.h i Makefile.

W pliku config.h zmień:

#define HAVE_BASENAME

na:

#undef HAVE_BASENAME

A następnie w pliku Makefile zmień:

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c

na:

SOBJS = smain.o env.o entry.o susetup.o shell.o \
        sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o

SSRCS = smain.c env.c entry.c setup.c shell.c \
        pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
        tz.c hushed.c basename.c

Zmiany te powodują zawarcie kodu z basename.c, który zawiera się w libc 4.6.27 i późniejszych.

4.3 Kopie zapasowe twoich oryginalnych programów.

Dobrym pomysłem będzie zrobienie kopii zapasowych programów, które zostaną zamienione przez Shadow Suite. W dystrybucji Slackware 3.0 są to:

Pakiet w wersji BETA ma możliwość wykonania tego poprzez program make, ale jest to w komentarzu w pliku Makefile, ponieważ różne dystrybucje umieszczają te programy w różnych miejscach. Można to zrobić pisząc: make save, ale najpierw trzeba skasować znaki # z pliku Makefile od linii: save:

Powinieneś także zrobić kopię zapasową pliku /etc/passwd, ale bądź ostrożny, żebyś nie zmazał programu passwd w katalogu /etc.

4.4 Polecenie make

Aby zainstalować pakiet musisz być zalogowany jako "root".

Uruchom make, aby skompilować programy wykonywalne:

make all

Możesz zobaczyć ostrzeżenie: rcsid defined but not used. Wszystko jest w porządku, ponieważ autor używa wersji kontrolnej pakietu.


Następna strona Poprzednia strona Spis treści