Slackware + PAM
wersja 0.1
 

Spis treści

1. Krótki wstęp
2. Ściągamy potrzebny soft
3. Instalacja
4. Już ?

Posłowie


1. Krótki wstęp

    Dokument ten opisuje jak zainstalować PAM (Pluggable Authentication Module)
na Slacku. Na swoich Linuxach nie korzystam z tego i jest mi z tym dobrze...
Któregoś razu musiałem autoryzować userów w oparciu o LDAP i PAM stał się niezbędny.
Większość Linuxów posiada PAM (np. RedHat, Mandrake). Slack tego nie ma (nawet w planach).
A ponieważ w Necie znalazłem niewiele - postanowiłem napisać toto żeby następnym razem
nie pieprzyć się w składanie kilku dokumentów do kupy i eksperymenty.

Jeśli to czytasz - masz Slacka i musisz na nim zainstalować PAM. Co więcej -
wiesz do czego jest on Tobie potrzebny. PAM to nie zabawka i można nieźle namieszać.
Ten dokument opisuje instalację PAM. Konfiguracja poszczególnych serwerów czy modułów
to już nie moja brocha - jest na ten temat wystarczająca dokumentacja w Sieci.
Nie jestem dzisiaj w nastroju do pisania więc wybacz - ograniczę się do konkretów.


2. Ściągamy potrzebny soft

Przygotuj się na pobranie 2,5 mega. Ściągamy ostatnie wersje kodów źródłowych.
W nawiasach podaję wersje z których korzystałem w czasie instalacji PAM na Slacku 9.1:

Linux-PAM (0.77)
util-linux (2.11z)
shadow (4.0.3)

Nie muszę pisać jest to wszystko dość ryzykowne - można spaprać sobie cały system.
Najlepiej dorwij jakiegoś peceta, zainstaluj sobie na nim tą samą wersję Linuxa jaką masz na
serwerze docelowym, po instalacji PAM odpowiednio skonfiguruj odpowiednie serwery,
testuj, testuj, testuj, zrób backup i dopiero bierz się za sedno sprawy. Powodzenia.


3. Instalacja

    Najpierw zabieramy się za Linux-PAM. Żadnych rewelacji,
po rozpakowaniu softu "klasyka":

./configure
make
make install


Utworzonych zostało kilka katalogów (/lib/security, /usr/include/security, /etc/security).
Mamy więc biblioteki i pliki nagłówkowe, moduły PAM oraz przykładowe konfigi dla nich.
Wszystko co potrzebne już jest - tylko, że nie działa (zupełnie jak pod Windows).

Jedziemy dalej: util-linux.
Przy okazji uaktualnimy sobie trochę softu :)
Wrzuć do jakiegoś edytora plik MCONFIG i ustaw jedną z pierwszych linijek na
HAVE_PAM=yes. Potem standardowo:

./configure
make
make install


Na koniec zostawiliśmy sobie shadow.
Po rozpakowaniu jedziemy:

./configure --with-libpam
make
make install


Lepiej, żeby teraz nie siadł prąd. Potrzebujemy plik konfiguracyjny /etc/pam.conf.
Przykładowy dołączony jest w kodzie "Linux-PAM", w katalogu "conf". Możesz go skopiować
i zacząć zabawę. W tym momencie powinieneś zacząć szukać w Necie czegoś na temat
konfiguracji PAM, czegoś na temat modułów. Ponieważ cała ta zabawa może trochę się
przeciągnąć, poniżej załączam pam.conf, który powinien być o.k. dla podstawowego
systemu. Możesz go pobrać stąd i zapisać jako /etc/pam.conf.
A tutaj plik żywcem dla "klikaczy kopiująco - wklejających":


# ---------------------------------------------------------------------------#
# /etc/pam.conf by Henryk Liniowski (http://linio.terramail.pl)                    #
# ---------------------------------------------------------------------------#
chfn    auth       required   pam_unix.so
chfn    account    required   pam_unix.so
chfn    password   required   pam_unix.so shadow md5 use_authtok
#
chsh    auth       required   pam_unix.so
chsh    account    required   pam_unix.so
chsh    password   required   pam_unix.so shadow md5 use_authtok
#
login   auth       requisite  pam_securetty.so
login   auth       required   pam_unix.so
login   auth       required   pam_nologin.so
login   account    requisite  pam_time.so
login   account    required   pam_unix.so
login   password   required   pam_unix.so shadow md5 use_authtok
login   session    required   pam_unix.so
login   session    required   pam_limits.so
#
passwd  password   required   pam_unix.so shadow md5
#
# su    auth       required     pam_wheel.so
su      auth       sufficient   pam_rootok.so
su      auth       required     pam_unix.so
su      account    required     pam_unix.so
su      session    required     pam_unix.so
su      password   required     pam_unix.so shadow md5 use_authtok
#
sshd    auth       required     pam_unix.so shadow nodelay use_first_pass
sshd    auth       required     pam_nologin.so
sshd    auth       required     pam_shells.so
sshd    account    required     pam_unix.so
sshd    account    requisite    pam_time.so
sshd    password   required     pam_unix.so shadow use_authtok
sshd    session    required     pam_unix.so
sshd    session    required     pam_limits.so
#
shadow   auth      sufficient pam_rootok.so
shadow   account   required   pam_permit.so
shadow   password  required   pam_permit.so
shadow   session   required   pam_deny.so
#
useradd   auth     required   pam_rootok.so
useradd   account  required   pam_permit.so
useradd   password required   pam_permit.so
useradd   session  required   pam_deny.so
#
userdel   auth     required   pam_rootok.so
userdel   account  required   pam_permit.so
userdel   password required   pam_permit.so
userdel   session  required   pam_deny.so
#
usermod  auth      required   pam_rootok.so
usermod  account   required   pam_permit.so
usermod  password  required   pam_permit.so
usermod  session   required   pam_deny.so
#
groupadd  auth     required   pam_rootok.so
groupadd  account  required   pam_permit.so
groupadd  password required   pam_permit.so
groupadd  session  required   pam_deny.so
#
groupdel  auth     required   pam_rootok.so
groupdel  account  required   pam_permit.so
groupdel  password required   pam_permit.so
groupdel  session  required   pam_deny.so
#
groupmod  auth     required   pam_rootok.so
groupmod  account  required   pam_permit.so
groupmod  password required   pam_permit.so
groupmod  session  required   pam_deny.so
#
newusers  auth     required   pam_rootok.so
newusers  account  required   pam_permit.so
newusers  password required   pam_permit.so
newusers  session  required   pam_deny.so
#
chpasswd  auth     required   pam_rootok.so
chpasswd  account  required   pam_permit.so
chpasswd  password required   pam_permit.so
chpasswd  session  required   pam_deny.so
#
chage   auth       sufficient pam_rootok.so
chage   auth       required   pam_unix.so
chage   account    required   pam_unix.so
chage   password   required   pam_permit.so
chage   session    required   pam_deny.so
#
other   auth       required   pam_deny.so
other   auth       required   pam_warn.so
other   account    required   pam_deny.so
other   password   required   pam_deny.so
other   password   required   pam_warn.so
other   session    required   pam_deny.so


Teraz, powinieneś spróbować zalogować się na jakiegoś użytkownika a w logach
zobaczyć ".... login(pam_unix) .... session opened ....".
Jeśli nie możesz zalogować się na nikogo - nie rebootuj komputera tylko sprawdź
wszystko po kolei raz jeszcze. Ponieważ nie używam X-ów, nie wiem czy będzie
możliwe zalogowanie się do kompa w okienkach. Jeśli nie - wyczaj co dopisać
do pam.conf żeby było to możliwe i podeślij mi info.


4. Już ?

    Co by tu dużo pisać... Wyczajenie o co chodzi z PAM jest chyba tylko
kwestią czasu. Nie jest to raczej zbyt ciekawe ale może być praktyczne.

Jeśli znajdziesz w moim pam.conf jakiegoś buga - napisz. Nie miałem zbyt wielu
okazji się tym bawić więc może coś ciekawego pominąłem.

Ważna uwaga na koniec: od tej pory jeśli chcesz kompilować soft (np. ftp czy pop3)
i używać PAM będziesz musiał do configure dorzucić opcję dotyczącą PAM.
Najlepiej wyczaić ją tak: "./configure --help |grep [pP][aA][mM]". Takie opcje
znajdują się w OpenSSH, Proftpd i większości POPów.


Posłowie

Jest to pierwsza wersja tego dokumentu i zawiera pewnie
jakieś błędy/niedoróbki/potknięcia itp. Będę bardzo wdzięczny
za wszelkie uwagi, komentarze, poprawki, wyrazy wdzięczności.
Z góry przepraszam za powyższe i mam nadzieję, że będziecie mnie
informować w których miejscach coś nie gra.
Jako (częściowe) wytłumaczenie przedstawiam fakt, że większość tej
pracy powstawała w późnych godzinach nocnych.

Ostatnia wersja tego dokumentu znajduje się pod niżej wymienionym adresem.
Kontakt ze mną: linio@terramail.pl
Wesprzyj finansowo autora - kliknij tutaj


 
===============================
Henryk Liniowski, Poznań 2004
http://linio.terramail.pl
===============================