Przesłanianie haseł (Shadow Password)
Przesłanianie haseł (Shadow Password)
Autor: Michael H. Jackson,
mhjack@tscnet.com
v1.3, 3 Kwietnia 1996
Wersja polska: Bartosz Maruszewski
B.Maruszewski@jtz.org.pl
v1.02, 26 Lipca 1997
Dokument ten opisuje jak zdobyć, zainstalować i skonfigurować pakiet
Shadow Password dla Linux-a. Omówione zostało tutaj także zdobywanie i
(ponowna) instalacja oprogramowania oraz demonów sieciowych, które potrzebują
dostępu do haseł użytkownika. Oprogramowanie to nie jest właściwą częścią
pakietu Shadow Suite, ale będą one musiały zostać przekompilowane,
aby móc korzystać z haseł. Jest tutaj także zawarty przykład dla
programistów, jak dodawać obsługę przesłanianych haseł w swoich programach.
Pod koniec dokumentu zawarte zostały odpowiedzi na często zadawane pytania.
Dokument ten został napisany w standardzie ISO-8859-2.
Oryginał można znaleźć pod adresem
ftp.icm.edu.pl w katalogu /pub/Linux/sunsite/docs/HOWTO.
1. Wprowadzenie.
Jest to dokument z serii HOWTO (czyli Jak To Zrobić). Opisuje on
jak i dlaczego instalować obsługę "shadow password" na swoim
Linux-ie. Zawarte jest także kilka przykładów na używanie pewnych
właściwości pakietu Shadow Suite.
Podczas instalacji pakietu oraz używania jego narzędzi musisz być
zalogowany jako "root". Podczas instalacji będziesz dokonywał
pewnych zmian do oprogramowania systemowego i zalecane jest, abyś
zrobił kopię tego oprogramowania. Zalecam też, abyś przeczytał i
zrozumiał wszystkie instrukcje zawarte tutaj zanim zaczniesz.
1.1 Zmiany w stosunku do poprzedniej wersji.
Dodane sekcje:
Dodałem sekcję na temat dlaczego mógłbyś niechcieć instalować
pakietu Shadow Suite.
Dodałem sekcję jak uaktualnić xdm-a.
Dodałem sekcję jak zmusić do działania specjalne właściwości pakietu
Shadow Suite.
Dodałem sekcję zawierającą często zadawane pytania.
Poprawki/Uaktualnienia:
Poprawiłem odwołania html do sunsite-a.
Poprawiłem sekcję na temat wu-ftpd, aby odzwierciedlała dodawanie
-lshadow do pliku Makefile.
Poprawiłem kilka literówek.
Zmieniłem sekcję na temat wu-ftpd, aby obsługiwał ELF.
Uaktualniłem cały dokument, aby odzwierciedlał problemy bezpieczeństwa
w różnych programach.
Dodałem rekomendację pakietu Linux Shadow Suite napisanego
przez Marka Michałkiewicza
1.2 Nowe wersje tego dokumentu.
Najnowszą wersję oryginału tego dokumentu można ściągnąć z
ftp.icm.edu.pl z katalogu
/pub/Linux/sunsite/docs/HOWTO. Inne formaty znajdują się
w katalogu other-formats. Albo poprzez sieć WWW z
sunsite.icm.edu.pl. Można też bezpośrednio
od autora. Autor będzie też
wysyłał nowe wersje na grupę dyskusyjną
comp.os.linux.answers
Dokument ten jest także rozprowadzany wraz z dystrybucją pakietu
Shadow-YYDDMM.
Na temat nowych wersji tłumaczenia zobacz sekcję
Od tłumacza.
1.3 Komentarze.
Proszę wszelkie komentarze, uaktualnienia czy sugestie wysyłać
do mnie. Im szybciej otrzymam
pocztę tym szybciej mogę poprawić ten dokument. Jeśli masz jakieś
uwagi na jego temat, to wyślij je bezpośrednio do mnie, ponieważ
bardzo rzadko odwiedzam grupy dyskusyjne.
2. Po co przesłaniać plik passwd ?
W chwili obecnej większość dystrybucji Linux-a nie instaluje domyślnie pakietu
Shadow Suite. Dotyczy to Slackware 2.3, Slackware 3.0 i innych
popularnych dystrybucji. Jednym z powodów tego jest to, że jeśli zapłacono
jakąś kwotę za Shadow Suite to prawa co do redystrybucji nie były
do końca jasne. Linux używa licencji GNU, która pozwala na umieszczanie go
w dowolnych pakietach (jak np. dystrybucje CD-ROM) i pobieranie za nie opłaty.
Obecny opiekun pakietu Shadow Suite,
Marek Michałkiewicz otrzymał
źródła oryginału na licencji w stylu BSD, która pozwala na dystrybucję.
Teraz, kiedy już sprawy praw kopiowania są rozwiązane, spodziewane jest, że
przyszłe dystrybucje będą zawierać domyślnie przesłanianie haseł. Jednak do
tego czasu, będziesz musiał je samemu instalować.
Jeśli instalowałeś swoją dystrybucję z CD-ROM-u, to pomimo, że dystrybucja
nie zainstalowała Shadow Suite niektóre pliki, których potrzebujesz
mogą się znajdować na CD-ROM-ie.
Wersje pakietu 3.3.1, 3.3.1-2 i shadow-mk mają problemy dotyczące
bezpieczeństwa ze swoim programem login i kilkoma innymi programami typu
suid root i nie powinny być już używane.
Wszystkie potrzebne pliki są dostępne poprzez anonimowane ftp oraz WWW.
W Linux-ie bez zainstalowanego pakietu Shadow Suite informacje
o użytkowniku wraz z hasłem trzymane są w pliku /etc/passwd.
Hasło znajduje się tam w formie zakodowanej (encrypted). Jednak jeśli
spytasz jakiegoś eksperta od kryptografii, to powie ci on/ona, że
hasło jest w postaci "encoded", a nie "encrypted" ponieważ używając
funkcji crypt(3), tekstowi jest przypisywany łańcuch pusty a hasło
jest kluczem. Dlatego, od tego momentu będę używał określenia "encoded".
Algorytm używany do kodowania hasła jest technicznie określany jako algorytm
działający w jedną stronę. Jest to algorytm, który jest łatwy do zastosowania
w jedną stronę, ale bardzo trudny do złamania. Więcej na ten temat znajdziesz
w sekcji
2.4 albo na stronie podręcznika systemowego
dotyczącej funkcji crypt(3).
Kiedy użytkownik wybiera hasło, albo jest mu ono przydzielone, jest ono
kodowane losowo generowaną wartością zwaną salt (sól). Oznacza to,
że każde hasło może zostać zakodowane na 4096 sposobów. Wartość salt
jest potem zapisywana razem z zakodowanym hasłem.
Kiedy użytkownik się wlogowuje i podaje hasło, najpierw pobierana
jest wartość salt z zakodowanego hasła. Następnie pobrane
hasło zostaje zakodowane pobraną wartością, i porównane z zapisanym
zakodowanym hasłem. Jeśli łańcuchy te są identyczne, to użytkownik
zostaje "wpuszczony" do systemu. Jest bardzo trudno (ale nie jest
to niemożliwe) wziąć losowo zakodowane hasło i otrzymać hasło
rozkodowane. Chociaż, w każdym systemie z większą liczbą
użytkowników, przynajmniej kilka haseł będzie zwykłymi słowami albo
jakąś wariacją zwykłych słów.
Włamywacze więdzą o tym wszystkim i po prostu kodują słownik ze
słowami i popularnymi hasłami wszytkimi możliwymi wartościami
salt. Potem porównają wyniki z zawartością twojego pliku
/etc/passwd. Jak znajdą jakiś identyczny łańcuch, to mają
hasło na następne konto. Nazywane jest to atakiem
słownikowym i jest to jeden z najpopularniejszych sposobów na
pozyskiwanie dostępu do systemu przez osoby nieuprawnione.
Jeśli się nad tym zastanowisz, to zobaczysz, że 8-znakowe hasło
może zostać zakodowane na 4096 * 13 sposobów. Tak więc słownik
składający się powiedzmy z 400.000 popularnych słów, nazw, imion,
haseł i ich prostych wariacji zmieściłby się z łatwością na dysku o
pojemności 4GB. Włamywacz musi go tylko posortować i sprawdzić czy
któryś z łańcuchów nie jest hasłem. Dysk o pojemności 4GB można
kupić za ok. 1000 dolarów, tak więc mieści się to w możliwościach
większości włamywaczy systemowych.
Jeśli włamywacz zdobędzie twój plik /etc/passwd, to musi
on zakodować swój słownik kluczem, który znajduje się w tym
pliku. Metoda ta może być wykorzystana przez przeciętnego
nastolatka z kilkoma megabajtami na dysku i komputerem klasy 486.
Nawet bez dużej ilości wolnego miejsca na dysku, narzędzia takie
jak crack(1) mogą zwykle złamać przynajmniej kilka haseł z systemu
z dostatecznie dużą ilością użytkowników (zakładając, że
użytkownicy mają możliwość samemu wybierać sobie hasła).
Plik /etc/passwd zawiera także takie informacje jak ID
użytkownika i ID grupy, które są używane przez większość
programów. Dlatego plik /etc/passwd musi
pozostać odczytywalny dla każdego. Jeśli chciałeś właśnie zmienić
prawa dostępu do pliku /etc/passwd tak, żeby nikt nie mógł
go czytać (oprócz "root-a"), to pierwszym symptomem jaki byś
zauważył, to to, że przy wydaniu polecenia ls -l
pojawiłyby się numery zamiast nazw użytkowników.
Pakiet Shadow Suite rozwiązuje ten problem poprzez
umieszczenie haseł w innym pliku (z reguły jest to
/etc/shadow). Plik /etc/shadow ma tak ustawione
prawa dostępu, że nie może go czytać nikt, oprócz
"root-a". Niektóre programy jak np. xlock, nie muszą mieć
możliwości zmiany haseł, ale tylko ich odczytu. Programy te mogą
albo być uruchamiane z prawem "suid root", albo możesz dodać grupę
shadow, która miałaby tylko prawo odczytu pliku
/etc/shadow. Program ten może wtedy należeć do grupy
"shadow" i być uruchamiany z prawem "sgid".
Przenosząc zakodowane hasła do innego pliku, efektywnie zabraniamy
włamywaczom dostępu do nich, co uniemożliwia ataki słownikowe.
Dodatkowo pakiet Shadow Suite posiada wiele innych zalet:
Plik konfiguracyjny, w którym można ustawic wartości domyślne
podczas logowania (/etc/login.defs)
Narzędzia do dodawania, modyfikacji i usuwania kont i grup.
Ustalanie "daty ważności" konta i jego wygasanie (expiration).
Przesłanianie haseł dla grup. (opcjonalnie)
Hasła o podwójnej długości (16 znaków) [NIE ZALECANE]
Lepsza kontrola nad wybieraniem haseł przez użytkowników.
Hasła przez telefon.
Programy do dodatkowej autentykacji [NIE ZALECANE]
Instalacja pakietu Shadow Suite przyczynia się do
zwiększenia bezpieczeństwa sieci opartej na Linux-ie, ale pozostaje
jeszcze wiele innych rzeczy do zrobienia, aby zwiększyć
bezpieczeństwo takiej sieci. Z czasem pojawi się seria HOWTO
poświęcona bezpieczeństwu.
Na
stronie poświęconej bezpieczeństwu w Linux-ie zawarte są
różne informacje na ten temat jak również ostrzeżenia o znanych
dziurach w systemie.
2.1 Czemu możesz nie chcieć przesłaniać swojego pliku z hasłami ?
Jest kilka okoliczności i konfiguracji, w których instalacja
pakietu Shadow Suite nie byłaby dobrym pomysłem:
Maszyna nie zawiera kont użytkowników.
Twoja maszyna jest w sieci LAN i używa NIS (Network Information
Services), aby obsługiwać nazwy użytkowników i hasła na innych
maszynach w tej samej sieci. (Właściwie mogłoby to być zrobione,
ale wykracza poza ramy tego dokumentu i nie zwiększyłoby
bezpieczeństwa w znacznym stopniu.)
Twoja maszyna jest używana przez serwery terminali, aby
weryfikować użytkowników poprzez NFS (Network File System), NIS
albo jakąś inną metodę.
Na twojej maszynie znajduje się inne oprogramowanie, które
autentykuje użytkowników, a nie ma wersji tego oprogramowania dla
shadow i nie masz źródeł.
2.2 Format pliku /etc/passwd.
Nieprzesłonięty plik /etc/passwd ma następujący format:
identyfikator:hasło:UID:GID:imie_nazw:katalog:powłoka
Gdzie:
identyfikatorNazwa (login) użytkownika
hasłoZakodowane hasło
UIDNumer użytkownika
GIDNumer domyślnej grupy dla użytkownika
imie_nazwImię i nazwisko użytkownika - Właściwie
pole to nazywa się GECOS (General Electric Comprehensive Operating
System) i mogą tam być zapisane inne dane niż tylko imię i nazwisko
Polecenia Shadow i strony podręcznika systemowego nazywają to pole
polem komentarza.
katalogKatalog domowy użytkownika (pełna ścieżka)
powłokaPowłoka dla danego użytkownika (pełna
ścieżka)
Na przykład:
login:Nkjg97jh7yff8:503:100:Imię Nazwisko:/home/login:/bin/bash
Gdzie Nk jest wartocią salt a
jg97jh7yff8 jest zakodowanym hasłem. Zakodowane hasło z
kluczem mogłoby równie dobrze wyglądać tak: ghHFgj75fR8iP
a te dwa łańcuchy to dokłanie te same hasła. Jest 4096 możliwości
zakodowania pojedynczego hasła. {Przykładowym hasłem jest tutaj
'hasło' naprawdę zły przykład hasła.}
Jak już pakiet Shadow Suite jest zainstalowany, to plik
/etc/passwd zawiera:
login:x:503:100:Imię Nazwisko:/home/login:/bin/bash
Znaczek "x" w tym przypadku jest po prostu czymś co wypełnia miejsce
hasła. Format pliku /etc/passwd się nie zmienił, zmieniło się
tylko miejsce przechowywania zakodowanego hasła. Oznacza to, że
każdy program, który tylko czyta plik /etc/passwd,a nie
zapisuje w nim hasła, będzie nadal działał poprawnie.
Hasła znajdują się obecnie w pliku /etc/shadow. (jest to
domyślna nazwa)
2.3 Format pliku przesłaniającego.
Plik /etc/shadow zawiera następujące informacje:
login:hasło:ostatnio_1970:może:musi:ostrz:dni:dni_1970:zarez
Gdzie:
loginpatrz /etc/passwd
hasłoZakodowane hasło
ostatnio_1970Ilość dni od 1 Stycznia 1970, kiedy
hasło było ostatnio modyfikowane
możeIlość dni w przeciągu, których hasło może być
zmienione
musiIlość dni, po której hasło musi zostać
zmienione
ostrzIlość dni przed wygaśnięciem hasła od jakiej
należy zacząć informować użytkownika o wygaśnięciu hasła.
dniIlość dni, po której hasło wygasa i konto jest
blokowane
dni_1970Ilość dni od 1 Stycznia 1970, po której
konto jest blokowane
zarezPole zarezerwowane
Poprzedni przykład mógł więc wyglądać tak:
login:Nkjg97jh7yff8:9479:0:10000::::
2.4 Przegląd funkcji crypt(3).
Ze strony podręcznika systemowego "man":
"crypt jest funkcją kodującą hasło. Oparta jest na
algorytmie DES (Data Encryption Standard) z dozwolonymi wariacjami
(między innymi), aby zniechęcić do sprzętowych rozwiązań
poszukiwania klucza.
Kluczem jest podane przez użytkownika hasło. [Zakodowany łańcuch
jest wartościami NULL]
Salt jest łańcuchem 2-znakowym wybranym ze zbioru
[a-zA-Z0-9]. Łańuch ten jest użyty po to, aby zaburzyć algorytm w
jeden z 4096 sposobów.
Biorąc 7 najmniej znaczących bitów każdego znaku z klucza
otrzymujemy 56-bitowy klucz. Ten 56-bitowy klucz jest używany, do
powtórnego kodowania stałego łańcucha (zwykle są to znaki
NULL). Zwrócona wartość wskazuje na zakodowane hasło - serię 13
drukowalnych znaków ASCII (dwa pierwsze znaki reprezentują wartość
salt). Wartość zwracana wskazuje na stałe dane, których zawartość
jest zmieniana przy każdym wywołaniu.
Uwaga: Liczba możliwych wartości klucza to 2^56 = 7,2E16
(około 72 biliardów). Wyczerpujące poszukiwania tego klucza są
możliwe przy wykorzystaniu wielu równolegle współpracujących
komputerów. Oprogramowanie, takie jak crack(1), jest dostępne i
szuka ono takich kluczy, które z reguły używane są przez
ludzi. Dlatego właśnie przy wybieraniu hasła powinno się unikać
przynajmniej zwykłych słów. Zaleca się, używanie programu
passwd(1), które podczas zmiany hasła sprawdza czy nowe hasło nie
jest przesadnie proste.
Algorytm DES ma w sobie pewne kruczki, które czynią użycie
interfejsu crypt(3) bezużytecznym w przypadku innym niż
autentykacja haseł. Jeśli masz zamiar używać interfejsu crypt(3)
do kryptografii nie rób tego: zdobądź dobrą książkę na temat
kodowania (encryption) i jedną z szeroko dostępnych bibliotek DES."
Większość pakietów Shadow Suite zawiera kod zwiększający
ilość znaków w haśle do 16. Eksperci od DES-a są temu przeciwni,
ponieważ w takim przypadku kodowanie najpierw odbywa się dla lewej
strony dłuższego hasła, a potem dla prawej strony. Z powodu tego
jak działa crypt, może to stworzyć mniej bezpiecznie
zakodowane hasło niż wtedy, gdy użyte zostałoby hasło
krótsze. Dodatkowo, jest mało prawdopodobne, żeby użytkownik był w
stanie zapamiętać hasło 16-znakowe.
Trwają w tej chwili prace, które mają na celu zastąpienie
dotychczasowego algorytmu autentykacji czymś bardziej bezpiecznym
oraz z obsługą dłuższych haseł (szczególnie algorytmem MD5) oraz
pozostawienie kompatybilności z metodą wykorzystującą crypt.
Jeśli szukasz dobrej książki na temat kodowania polecam:
"Applied Cryptography: Protocols, Algorithms, and Source Code in C"
by Bruce Schneier <schneier@chinet.com>
ISBN: 0-471-59756-2
3. Zdobywanie pakietu Shadow Suite.
3.1 Historia pakietu Shadow Suite dla Linux-a.
NIE UŻYWAJ PAKIETÓW WYMIENIONYCH W TEJ SEKCJI, SĄ W NICH
PROBLEMY Z BEZPIECZEŃSTWEM.
Oryginał pakietu Shadow Suite został napisany przez
John F. Haugh II.
Jest kilka wersji, które były używane na Linux-ie:
Oryginał to shadow-3.3.1
shadow-3.3.1-2 to łata przeznaczona specjalnie na
Linux-a zrobiona przez
Florian La Roche <flla@stud.uni-sb.de>. Zawiera ona
także dalsze ulepszenia.
Pakiet shadow-mk został skomponowany specjalnie dla
Linux-a.
Pakiet shadow-mk zawiera pakiet shadow-3.3.1
dystrybuowany przez John F. Haugh II wraz z łatą
shadow-3.3.1-2 patch, kilka poprawek zrobionych przez
Mohan Kokal <magnus@texas.net>,
które uczyniły instalację o wiele łatwiejszą, łatę zrobioną przez
Joseph R.M. Zbiciak, która eliminuje dziury w programie
/bin/login związane z opcjami -f, -h oraz kilka innych łat.
Pakiet shadow-mk był pakietem poprzednio
rekomendowanym, ale powinien zostać zamieniony z powodu
problemów z bezpieczeństwem związanych z programem login.
W pakietach 3.3.1, 3.3.1-2 oraz shadow-mk są problemy związane z
programem login. Błąd ten to niesprawdzanie długości
podawanego identyfikatora. Powoduje to przepełnienie bufora, co z
kolei powoduje załamania (crashes) programu albo gorzej. Podobno to
przepełnienie bufora może być wykorzystane przez kogoś, kto posiada
konto w systemie w połączeniu z bibliotekami dzielonymi, aby
uzyskać przywileje root-a. Nie będę opisywał jak dokładnie
działa ten błąd ponieważ jest dużo systemów Linux-owych, które są
zarażone, ale systemy z zainstalowanymi tymi pakietami Shadow
Suite oraz większość systemów w wersji przed-ELF bez
pakietu Shadow Suite są podatne na atak!
Więcej informacji na ten temat znajdziesz na
stronie poświęconej bezpieczeństwu w Linux-ie. (Shared
Libraries and login Program Vulnerability)
3.2 Gdzie znaleźć pakiet Shadow Suite.
Jedyny polecany pakiet Shadow Suite jest wciąż w wersji
BETA, chociaż najnowsze wersje są bezpieczne w środowisku produkcji
i nie zawierają podatnego na ataki programu login.
W pakiecie używane jest następujące nazewnictwo:
shadow-RRMMDD.tar.gz
gdzie RRMMDD oznacza datę wprowadzenia pakietu w obieg.
Wersja ta ostatecznie będzie wersją 3.3.3, kiedy
zakończone zostaną testy w wersji BETA, a obsługiwana jest przez
Marka Michałkiewicza <marekm@i17linuxb.ists.pwr.wroc.pl>.
Dostępna jest jako
shadow-current.tar.gz.
Dostępna jest także pod adresem
ftp.icm.edu.pl.
Powinieneś użyć najnowszej dostępnej wersji.
NIE powinieneś używać wersji starszej niż
shadow-960129 ponieważ występuje tam opisany powyżej
problem z programem login.
Jeśli piszę o pakiecie Shadow Suite, to mam na myśli ten
właśnie plik. Zakłada się też, że tej właśnie wersji używasz.
Aby napisać ten dokument użyłem tej właśnie wersji pakietu.
Jeśli wcześniej używałeś pakietu shadow-mk, powinieneś
zaktualizować go do tej wersji i ponownie skompilować wszystko to,
co pierwotnie przekompilowałeś,
3.3 Co jest zawarte w pakiecie Shadow Suite.
Pakiet ten zawiera zastępcze wersje dla programów:
su, login, passwd, newgrp, chfn, chsh, id
Pakiet ten zawiera także nowe programy:
chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod, groupadd,
groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv, pwunconv.
Dodatkowo znajduje się tam także biblioteka libshadow.a
przeznaczona do pisania i kompilowania programów, które potrzebują
dostępu do haseł użytkowników.
Zawarte są także strony podręcznika systemowego do wszystkich
programów.
Znajduje się tam także plik konfiguracyjny dla programu login,
który zostanie zainstalowany jako /etc/login.defs.
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:
/bin/su
/bin/login
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/id
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.
5. Instalacja
5.1 Zaopatrz się w dyskietkę startową w razie gdybyś coś popsuł.
Jeśli coś poważnie pójdzie nie tak, byłoby dobrze, gdybyś miał
dyskietkę startową. Jeśli masz dyskietki boot/root z czasów
instalacji, to w porządku, w innym przypadku przeczytaj
Bootdisk-HOWTO, które opisuje jak zrobić dyskietkę startową.
5.2 Usuwanie zduplikowanych stron podręcznika systemowego.
Powinieneś także przenieść strony podręcznika systemowego, które
zostaną zastąpione. Nawet jeśli jesteś na tyle odważny, że
instalujesz Shadow Suite bez kopii zapasowej, to i tak
będziesz chciał przenieść stare strony podręcznika
systemowego. Nowe strony normalnie nie usunęłyby starych, ponieważ
te drugie są przypuszczalnie skompresowane.
Możesz użyć takiej kombinacji poleceń: man -aW polecenie i
locate polecenie, aby zlokalizować strony, które mają być
usunięte czy przeniesione. Raczej łatwiej zrobić to przed
poleceniem make install.
Jeśli używasz dystrybucji Slackware 3.0, to oto strony, które
powinieneś usunąć/przesunąć:
/usr/man/man1/chfn.1.gz
/usr/man/man1/chsh.1.gz
/usr/man/man1/id.1.gz
/usr/man/man1/login.1.gz
/usr/man/man1/passwd.1.gz
/usr/man/man1/su.1.gz
/usr/man/man5/passwd.5.gz
W katalogu /var/man/cat[1-9] mogą znajdować się strony o
tych samych nazwach, które także powinny zostać usunięte/przeniesione.
5.3 Polecenie make install
Jesteś gotów, aby napisać (zrób to jako "root"):
make install
Zainstaluje to nowe programy i programy zastępcze oraz ustawi
odpowiednie prawa dostępu do plików. Zostaną także zainstalowane
strony podręcznika systemowego.
Są tu także instalowane pliki nagłówkowe w odpowiednich miejscach w
/usr/include/shadow.
Jeśli używasz wersji BETA tego pakietu, to musisz ręcznie skopiować
plik login.defs do katalogu /etc i upewnić się,
że tylko "root" może go modyfikować.
cp login.defs /etc
chmod 600 /etc/login.defs
Plik ten jest plikiem konfiguracyjnym dla programu login.
Powinieneś go przejrzeć i odpowiednio zmodyfikować jego zawartość
zgodnie z twoimi wymaganiami. To tutaj decydujesz, z których
terminalli (tty) może zalogować się "root" oraz ustawiasz inne
opcje bezpieczeństwa (np. domyślne wygasanie haseł).
5.4 Polecenie pwconv
Następnym krokiem jest polecenie pwconv. Musi ono także
być wykonane jako "root" i najlepiej w katalogu /etc:
cd /etc
/usr/sbin/pwconv
Program pwconv tworzy z pliku /etc/passwd dwa
pliki: /etc/npasswd i /etc/nshadow.
Dostępny jest także program pwunconv jeśli musisz zrobić
normalny plik /etc/passwd z plików /etc/passwd i
/etc/shadow.
5.5 Zmiany nazw plików npasswd i nshadow
Teraz, kiedy już wykonałeś polecenie pwconv, stworzyłeś
dwa pliki - /etc/npasswd i /etc/nshadow. Ich nazwy muszą
zostać zmienione odpowiednio na /etc/passwd i /etc/shadow.
Chcemy także zrobić kopię oryginalnego pliku /etc/passwd i
upewnić się, że tylko "root" może go czytać. Kopię zapasową
umieścimy w katalogu domowym "root-a":
cd /etc
cp passwd ~/passwd
chmod 600 ~/passwd
mv npasswd passwd
mv nshadow shadow
Powinieneś się także upewnić, czy właściciel plików i prawa dostępu
są poprawne. Jeśli masz zamiar używać XWindows, to
programy xlock i xdm muszą mieć możliwość odczytu pliku
shadow, ale nie zapisu.
Są dwa sposoby na zrobienie tego. Możesz ustawić bit "SUID" dla
programu xlock (chmod u+s xlock); xdm ma z reguły
ten bit ustawiony. Albo możesz przydzielić plik /etc/shadow do
grupy shadow, ale zanim to zrobisz, sprawdź czy masz grupę
shadow w pliku /etc/group. Właściwie żaden z użytkowników
systemu nie powinien być w tej grupie.
cd /etc
chown root.root passwd
chown root.shadow shadow
chmod 0644 passwd
chmod 0640 shadow
Twój system ma teraz przesłonięte hasła. Powinieneś teraz przejść
na inny wirtualny terminal i sprawdzić czy możesz się zalogować
Zrób to teraz - naprawdę !
Jeśli nie możesz, to coś jest nie tak ! Aby powrócić do stanu
sprzed instalacji Shadow Suite zrób to:
cd /etc
cp ~/passwd passwd
chmod 644 passwd
Przywracasz w ten sposób stare pliki, które wcześniej zachowałeś,
na ich właściwe miejsce.
6. Inne programy, które może musisz uaktualnić albo "załatać".
Pomimo, iż pakiet Shadow Suite posiada zastępcze programy dla
większości programów, które potrzebują dostepu do haseł, to prawie
w każdym systemie są jeszcze dodatkowe programy, które potrzebują
dostępu do haseł.
Jeśli masz dystrybucję Debian (a nawet jeśli nie masz),
możesz znaleźć źródła programów, które muszą być przerobione
pod tym adresem.
Reszta tej sekcji opisuje jak uaktualnić programy: adduser, wu_ftpd, ftpd, pop3d, xlock, xdm i sudo tak, aby obsługiwały
przesłonięte hasła.
Aby dowiedzieć się jak zrobić obsługę przesłoniętych haseł w
jakimkolwiek innym programie zobacz sekcję
Obsługa przesłanianych haseł w programach w C. (Programy te
i tak muszą być uruchomione z bitem "SUID" dla "root-a" albo grupy
shadow, aby rzeczywiście mieć dostęp do haseł.)
6.1 Program adduser z dystrybucji Slackware.
Dystrybucja Slackware (i pewnie inne) zawiera interaktywny program
służący do dodawania nowych użytkowników - /sbin/adduser.
Wersję tego programu obsługującą przesłonięte hasła można pobrać
np. z
ftp.icm.edu.pl z katalogu /pub/Linux/sunsite/system/admin/accounts/.
Ja zalecam używanie programów, które są dostarczane wraz z pakietem
Shadow Suite (useradd, usermod, i userdel)
zamiast adduser z dystrybucji Slackware. Co prawda
nauczenie się jak się nimi posługiwać zabiera trochę czasu, ale
opłaca się to ponieważ masz o wiele większą kontrolę i mają one
poprawne blokowanie plików (file locking) /etc/passwd i
/etc/shadow - adduser tego nie robi.
Więcej informacji w następnej sekcji -
Wprowadzanie pakietu Shadow Suite do użycia..
Ale jeśli już musisz go mieć, oto co musisz zrobić:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin
6.2 Serwer wu_ftpd.
Wraz z większością dystrybucji Linux-a przychodzi serwer wu_ftpd.
Jeśli twoja dystrybucja nie instaluje domyślnie pakietu Shadow
Suite, to twój serwer wu_ftpd nie będzie skompilowany z
obsługą przesłoniętych haseł. wu_ftpd jest odpalany z
inetd/tcpd jako proces "root-a". Jeśli twój demon
wu_ftpd jest starą wersją, to będziesz chciał ją
uaktualnić tak czy inaczej ponieważ stare wersje mają pewien błąd,
który kompromituje konto "root". (Więcej informacji
znajdziesz na
Stronie Domowej Bezpieczeństwa na Linuxie).
Na szczęście musisz tylko zdobyć żródła tego programu i skompilować
go z włączoną obsługą "Shadow password".
Jeśli nie masz systemu ELF, to serwer wu_ftpd możesz
znaleźć
na SUNSite Polska - nazywa się wu_ftpd-2.4-fixed.tar.gz
Jak już ściągniesz te źródła, to wtedy napisz:
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
Potem zmień w pliku ./src/makefiles/Makefile.lnx linię:
LIBES = -lbsd -support
na:
LIBES = -lbsd -support -lshadow
Teraz możesz uruchomić skrypt kompilujący i zainstalować pakiet:
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
Polecenia te powodują użycie pliku konfiguracyjnego z obsługą haseł
przesłanianych dla Linux-a, skompilowanie i instalację serwera.
U siebie na Slackware 2.3 musiałem dodatkowo przed kompilacją
zrobić coś takiego:
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
Zgłaszane były problemy z kompilacją na systemie binarnym ELF, ale
wersja BETA następnej wersji działa dobrze. Można ją znaleźć pod
adresem
ftp.icm.edu.pl pod nazwą wu-ftp-2.4.2-beta-10.tar.gz.
Jak już ściągniesz serwer umieść go w /usr/src i napisz:
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config
Potem zmień w pliku config.lnx:
#undef SHADOW.PASSWORD
na:
#define SHADOW.PASSWORD
Potem:
cd ../Makefiles
i zmień w pliku Makefile.lnx
LIBES = -lsupport -lbsd # -lshadow
na:
LIBES = -lsupport -lbsd -lshadow
Następnie skompiluj i zainstaluj:
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
Zauważ, że powinieneś sprawdzić w /etc/inetd.conf katalog,
w którym twój serwer rzeczywiście się znajduje. Powiadomiono mnie,
że niektóre dystrybucje umieszczają demony serwerów w innych
miejscach, a wtedy wu_ftpd może się znajdować gdzie indziej.
6.3 Standardowy ftpd.
Jeśli masz u siebie standardowy serwer ftpd, zalecałbym
zmianę na wu_ftpd. Poza znaną dziurą omówioną wcześniej,
wu_ftpd jest uznany za bardziej bezpieczny.
Jeśli nalegasz na standardowy, albo potrzebujesz obsługi
NIS, to
na SUNSite Polska znajdziesz ftpd-shadow-nis.tgz.
6.4 pop3d (Post Office Protocol 3)
Jeśli potrzebujesz obsługi Post Office Protocol 3, będziesz
musiał skompilować ponownie program pop3d. Normalnie jest
on uruchamiany przez inetd/tcpd jako "root".
Na SUNSite Polska dostępne są dwie wersje:
pop3d-1.00.4.linux.shadow.tar.gz
pop3d+shadow+elf.tar.gz
Obie są raczej proste do zainstalowania.
6.5 xlock
Jeśli zainstalujesz pakiet Shadow Suite i uruchomisz
XWindows, a następnie zablokujesz (lock) ekran nie
uaktualniając programu xlock, będziesz musiał użyć
CTRL+ALT+Fx, aby przełączyć się na wirtualną konsolę
tekstową (jeśli masz jakąś), zalogować się i zlikwidować proces
xlock (albo użyć CTRL+ALT+BACKSPACE żeby zamknąć
XWindows). Na szczęście uaktualnienie programu xlock jest
dość proste.
Jeśli masz XFree86 wersja 3.x.x, przypuszczalnie używasz
xlockmore (który jest wspaniałym "screensaver-em" w
połaczeniu z "lock"). Następujący pakiet obsługuje przesłonięte
hasła - xlockmore-3.5.tgz a dostępny jest z
SUNSite Polska. Jeśli masz starszą wersję zalecam
uaktualnienie do tej.
Oto "z grubsza" to, co musisz zrobić:
Ściągnij xlockmore i umieść w /usr/src
rozpakuj: tar -xzvf xlockmore-3.7.tgz
zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię
#define HasShadowPasswd NO
na:
#define HasShadowPasswd YES
skompiluj pliki wykonywalne:
cd /usr/src/xlockmore
xmkmf
make depend
make
potem przenieś wszystko w odpowiednie miejsce i uaktulanij
prawa dostępu i właścicieli plików
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
Twój xlock będzie teraz działał poprawnie.
6.6 xdm
xdm jest programem, który prezentuje ekran "logujący" dla
XWindows. Niektóre systemy startują ten program kiedy system ma się
uruchomić w odpowiednim "runlevel-u" (zobacz /etc/inittab).
Jeśli zainstalowałeś przesłaniane hasła, musisz uaktulanić ten
program. Na szczęście jest to dość proste:
xdm.tar.gz można ściągnąć z
SUNSite Polska.
Ściągnij ten plik i umieść go w /usr/src, potem go
rozpakuj: tar -xzvf xdm.tar.gz.
Zmień w pliku /usr/X11R6/lib/X11/config/linux.cf linię
#define HasShadowPasswd NO
na:
#define HasShadowPasswd YES
Skompiluj pliki wykonywalne:
cd /usr/src/xdm
xmkmf
make depend
make
Potem umieść wszystko na swoim miejscu cp xdm /usr/X11R6/bin/.
xdm jest uruchamiany jako "root" tak więc nie musisz
zmieniać jego praw dostępu.
6.7 sudo
Program sudo pozwala administratorowi na udostępnianie
zwykłym użytkownikom programów, które wymagają uprawnień
"root-a". Jest to pożyteczne ponieważ można ograniczać dostęp do
konta "root" i jednocześnie pozwalać użytkownikom np. montować
urządzenia.
sudo musi przeczytać hasło ponieważ weryfikuje użytkownika
kiedy jest uruchamiane. sudo jest uruchamiane z bitem SUID
"root" tak więc nie ma problemu z dostępem do pliku /etc/shadow.
Program ten z obsługą haseł przesłanianych dostępny jest
na SUNSite Polska pod nazwą sudo-1.2-shadow.tgz.
Uwaga: Podczas instalacji tego programu usunięty zostanie
plik /etc/sudoerrs i zastąpiony domyślnym przychodzącym
razem z pakietem. Tak więc zrób sobie kopię zapasową jeśli robiłeś
tam jakieś zmiany. Albo możesz usunąć linijkę kasującą ten plik z
pliku Makefile.
Obsługa przesłanianych haseł jest już ustawiona w pakiecie, tak
więc wszystko co trzeba zrobić, to przekompilować go. Po
umieszczeniu go w /usr/src napisz:
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
6.9 pppd (Serwer Protokołu Point-to-Point)
Serwer pppd może zostać tak ustawiony, aby używał różnych typów
autentykacji:
Password Authentication Protocol (PAP) i Cryptographic
Handshake Authentication Protocol (CHAP). Serwer pppd zwykle
czyta łańuchy haseł z /etc/ppp/chap-secrets
i/albo z /etc/ppp/pap-secrets. Jeśli używasz tego
domyślnego zachowania serwera pppd, to przeinstalowywanie go nie
jest konieczne.
pppd pozwala także na użycie parametrów login-u (albo z
wiersza poleceń, albo z pliku konfiguracyjnego, albo z pliku z
opcjami). Jeśli jest podana jakaś opcja login-u, to pppd
użyje pliku /etc/passwd, żeby zweryfikować identyfikator i
hasło dla PAP. To oczywiście nie zadziała odkąd nasz plik z hasłami
jest przesłaniany. Jeśli używasz pppd-1.2.1d, to będziesz musiał
dodać kod do obsługi haseł przesłanianych.
Podany w dalszej części przykład dodaje obsługę dla tej właśnie wersji.
Wersja pppd-2.2.0 ma już w sobie obsługę przesłanianych haseł.
7. Wprowadzanie pakietu Shadow Suite do użycia.
Sekcja ta opisuje kilka rzeczy które będziesz chciał wiedzieć jak
już zainstalowałeś pakiet Shadow Suite. Dalsze informacje
zawarte są na stronach podręcznika systemowego na temat każdego
polecenia.
7.1 Dodawanie, Modyfikacja i usuwanie użytkowników.
Pakiet Shadow Suite dodał następujące polecenia do
dodawania, modyfikacji i usuwania użytkowników. Są one obsługiwane z
wiersza poleceń przez parametry (mogłeś także zainstalować program
adduser).
useradd.
Polecenie useradd może zostać użyte, aby dodać użytkownika
do systemu. Wykonujesz je także, żeby zmienić domyślne ustawienia.
Pierwszą rzeczą jaką powinieneś zrobić, to sprawdzić ustawienia
domyślne na twoim systemie i odpowiednio je zmienić:
useradd -D
GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel
Wartości domyślne to pewnie nie są te, które chcesz używać, tak
więc jeśli zacząłbyś dodawać użytkowników teraz, to musiałbyś
podawać informacje dla każdego użytkownika. Jednak możemy i
powinniśmy zmienić wartości domyślne:
Niech domyślną grupą będzie 100
Niech hasła wygasają po 60 dniach
Niech konta nie będą blokowane po wygaśnięciu hasła
Niech domyślną powłoką będzie /bin/bash
Aby zrobić takie zmiany napisałbym:
useradd -D -g100 -e60 -f0 -s/bin/bash
Teraz uruchomienie useradd -D pokaże:
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel
W razie gdybyś chciał wiedzieć, to wartości te są zapisywane w
/etc/default/useradd.
Teraz możesz użyć polecenia useradd, aby dodać
użytkowników do systemu. Na przykład, aby dodać użytkownika fred
używając wartości domyślnych napisałbyś:
useradd -m -c "Fred Flintstone" fred
Stworzy to następującą pozycję w /etc/passwd:
fred:*:505:100:Fred Flinstone:/home/fred:/bin/bash
oraz następującą pozycję w /etc/shadow:
fred:!:0:0:60:0:0:0:0
Utworzony zostanie katalog domowy freda oraz skopiowana zostanie
tam zawartość katalogu /etc/skel z powodu opcji -m.
Ponieważ nie podaliśmy UID-u użyty zostanie następny wolny.
Konto freda będzie utworzone, ale nie będzie on się mógł zalogować
dopóki go nie odblokujemy. Zrobimy to przez zmianę hasła:
passwd fred
Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******
Teraz w /etc/shadow będzie:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
A fred będzie mógł się teraz zalogować i korzystać z
systemu. Najlepsze w użyciu programów, które przychodzą razem z
pakietem Shadow Suite jest to, że wszelkie zmiany plików
/etc/passwd i /etc/shadow są wykonywane z
tzw. blokowaniem. Ta więc jeśli dodajesz użytkownika do systemu a
inny użytkownik właśnie sobie zmienia hasło, to obie operacje
zostaną wykonane poprawnie.
Powinieneś używać raczej dostarczonych programów niż edytować
ręcznie pliki /etc/passwd i /etc/shadow. Jeśli
edytowałeś plik /etc/shadow i jakiś użytkownik zmieniał
sobie w tym samym czasie hasło, to po zapisaniu zmian dokonanych
przez ciebie nowe hasło użytkownika zginie.
Oto mały interaktywny skrypt, który dodaje nowego użytkownika
używając useradd i passwd:
#!/bin/bash
#
# /sbin/newuser - Skrypt dodający użytkowników do systemu używającego
# programów useradd z pakietu Shadow Suite i passwd.
#
# Napisany przez Mike'a Jacksona <mhjack@tscnet.com> jako przykład do
# Shadow-Password-HOWTO. Pozwolenie na używanie i modyfikacje wyraźnie dane.
#
# Możnaby ten skrypt zmodyfikować tak, żeby pokazywał wartości domyślne
# oraz pozwalał na modyfikację podobnie jak program adduser ze Slackware.
# Możnaby też sprawdzać błędy, czy głupie wartości.
#
#
##
# Wartości domyślne dla polecenia useradd
##
GROUP=100 # Domyślna grupa
HOME=/home # Katalog domowy (/home/identyfikator)
SKEL=/etc/skel # Katalog szkieletowy
INACTIVE=0 # Ilość dni, po których wygasa hasło.
EXPIRE=60 # Ilość dni, przez którą ma istnieć hasło
SHELL=/bin/bash # Domyślna powłoka (pełna ścieżka)
##
# Wartości domyślne dla polecenia passwd
##
PASSMIN=0 # Ilość dni między którą zmienia się hasło
PASSWARN=14 # Ilość dni przed wygaśnięciem hasła kiedy jest
# wysyłana wiadomość ostrzegająca.
##
# Upewnij się, że "root" uruchomił ten skrypt
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
echo "You must be root to add news users!"
exit 1
fi
##
# Zapytaj o identyfikator i imię i nazwisko
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# Zauważ, że wymagane są "" przy $FULLNAME ponieważ pole to będzie
# prawie zawsze zawierało przynajmniej jedną spację, a bez " polecenie
# useradd "pomyślałoby", że jest to następny parametr kiedy doszłoby
# do spacji.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
-f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# Ustaw domyślne wartości dla hasła
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# Niech polecenie passwd zapyta poprawnie (dwa razy) o hasło
##
/bin/passwd $USERNAME
##
# Pokaż, co zostało zrobione
##
echo ""
echo "Entry from /etc/passwd:"
echo -n " "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n " "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n " "
passwd -S $USERNAME
echo ""
Użycie skryptu do dodawania użytkowników do systemu jest na prawdę
bardziej preferowane niż ręczna edycja plików /etc/passwd
czy /etc/shadow czy też używanie programu adduser
ze Slackware. Możesz śmiało modyfikować ten skrypt dla swoich
potrzeb.
Więcej informacji na temat useradd znajdziesz w
podręczniku systemowym.
usermod.
Program usermod używany jest do modyfikowania informacji na
temat danego użytkownika. Opcje tego programu są podobne do opcji
programu useradd.
Powiedzmy, że chcesz zmienić powłokę dla freda; zrobiłbyś to tak:
usermod -s /bin/tcsh fred
Teraz pozycja dotycząca freda w /etc/passwd zmieniłaby się
na:
fred:*:505:100:Fred Flinstone:/home/fred:/bin/tcsh
Załóżmy, że chcemy, żeby konto freda wygasło 15.09.1997:
usermod -e 09/15/97 fred <-- data w stylu angielskim-amerykańskim (mmddrr)
Teraz pozycja dotycząca freda w /etc/shadow zmieniłaby się
na:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
Więcej informacji na temat usermod znajdziesz w
podręczniku systemowym.
userdel.
userdel robi dokładnie to czego się spodziewałeś - kasuje
konto podanego użytkownika. Użycie jest proste:
userdel -r <identyfikator>
Opcja -r powoduje skasowanie wszystkich plików z katalogu
domowego użytkownika. Plików zlokalizowanych w innym systemie
plików trzeba poszukać i skasować je ręcznie.
Jeśli chcesz tylko zablokować dane konto, a nie skasować to użyj
polecenia passwd.
7.2 Polecenie passwd i "termin ważności" hasła.
Polecenie passwd używane jest do zmiany hasła. Oprócz tego
używane jest przez "root-a" do:
Blokowania i odblokowywania kont (-l i -u)
Ustawiania maksymalnej ilości dni przez jaką hasło jest ważne (-x)
Ustawiania minimalnej ilości dni między zmianami hasła (-n)
Ustawiania ilości dni, po których wysyłane jest ostrzeżenie o
wygaśnięciu hasła (-w)
Ustawiania ilości dni, po której hasło wygasa przed
zablokowaniem konta (-i)
Pozwalania na przeglądanie informacji o koncie w czytelniejszym
formacie (-S)
Na przykład, spójrzmy jeszcze raz na freda:
passwd -S fred
fred P 03/04/96 0 60 0 0
Oznacza to, że hasło freda jest ważne, ostatnio było zmieniane
04.03.1996, może być zmienione w każdej chwili, wygasa po 60
dniach, fred nie zostanie ostrzeżony oraz konto nie zostanie
zablokowane po wygaśnięciu hasła.
Oznacza to po prostu tyle, że kiedy fred zaloguje się po
wygaśnięciu hasła zostanie zaraz na początku poproszony o podanie
nowego hasła.
Jeśli zdecydujemy się, że chcemy ostrzec freda na 14 dni przed
wygaśnięciem jego hasła i zablokować jego konto 14 dni po
wygaśnięciu hasła trzebaby napisać tak:
passwd -w14 -i14 fred
Teraz dane o fredzie zmianiły się na:
fred P 03/04/96 0 60 14 14
Więcej informacji na temat passwd znajdziesz w
podręczniku systemowym.
7.3 Plik login.defs
Plik /etc/login jest plikiem konfiguracyjnym dla programu
login oraz dla całego pakietu Shadow Suite.
/etc/login zawiera ustawienia od tego jak będą wyglądać
znaki zachęty do tego jakie domyślne wartości będą dla wygasania
hasła kiedy użytkownik je sobie zmieni.
Plik /etc/login.defs jest dość dobrze udokumentowany już
przez same komentarze w nim zawarte. Chociaż jest kilka rzeczy do
odnotowania:
Zawiera opcje, które mogą być włączane i wyłączane do określania
ilości zalogowań.
Zawiera wskazania na inne pliki konfiguracyjne.
Zawiera domyślne wartości dla takich ustawień jak "termin
ważności" hasła.
Z powyższej listy wynika, że jest to raczej ważny plik i powinieneś
się upewnić, że istnieje i że ustawienia są takie jak chciałeś.
7.4 Hasła dla grup.
Plik /etc/groups może zawierać hasła, które pozwalają
użytkownikom dołączyć się do jakiejś grupy. Funkcja ta jest
włączona jeśli zdefiniujesz stałą SHADOWGRP w pliku
/usr/src/shadow-YYMMDD/config.h .
Jeśli ją zdefiniujesz i skompilujesz pakiet, musisz utworzyć plik
/etc/gshadow, żeby trzymać tam hasła grup i informacje
administracyjne.
Do utworzenia pliku /etc/shadow użyłeś programu
pwconv; nie ma odpowiednika do utworzenia pliku
/etc/gshadow, ale to nie ma znaczenia bo plik ten sam się
sobą zajmuje.
Aby stworzyć początkowy plik /etc/gshadow zrób tak:
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
Jak będziesz tworzył nowe grupy, zostaną one dodane do
/etc/group i /etc/gshadow.
Do modyfikacji grup służą programy dostarczane wraz z pakietem
Shadow Suite: groups, groupadd,
groupmod i groupdel.
Format pliku /etc/group jest taki:
nazwa_grupy:!:GID:członek,członek,...
Gdzie:
nazwa_grupy- chyba nie wymaga wyjaśniania :)
!- w tym miejscu normalnie byłoby hasło, ale
teraz jest ono w gshadow
GID- numer grupy
członek- lista członków grupy.
Format pliku /etc/gshadow jest taki:
nazwa_grupy:hasło:admin,admin,...:członek,członek,...
Gdzie:
nazwa_grupy- chyba nie wymaga wyjaśniania :)
hasło- zakodowane hasło grupy
admin- lista administratorów grupy
członek- lista członków grupy
Polecenie gpasswd jest używane tylko do dodawania i
usuwania członków do/z grupy. "root" i każdy z administratorów
grupy może usuwać i dodawać członków.
Hasło dla grupy może być zmienione za pomocą polecenia
passwd przez "root-a" i każdego z administratorów grupy.
Chociaż nie ma strony do podręcznika systemowego dla
gpasswd, to zrozumienie opcji tego polecenia nie jest
takie trudne jak już rozumiesz jego format i
koncept. gpasswd bez żadnych parametrów poda opcje jakie
przyjmuje.
7.5 Programy do sprawdzania poprawności.
pwck
Program pwck sprawdza poprawność plików /etc/passwd
i /etc/shadow. Sprawdzi każdego użytkownika czy ma:
poprawną ilość pól,
unikalny identyfikator,
dobry UID i GID
dobrą grupę domyślną
poprawny katalog domowy
poprawną powłokę
Ostrzeże nas także jeśli znajdzie konta bez haseł.
Uruchomienie tego programu po zainstalowaniu pakietu Shadow
Suite jest dobrym pomysłem. Powinno sie go także uruchamiać
okresowo - co tydzień, co miesiąc. Jeśli użyjesz opcji -r,
to możesz użyć programu cron, aby uruchamiać pwck
okresowo i dostawać raport pocztą.
grpck
Program ten sprawdza poprawność plików /etc/group i
/etc/gshadow. Sprawdza:
ilość pól,
unikalną nazwę grupy
poprawność listy administratorów i członków.
Ma także opcję -r do automatycznych raportów.
7.6 Hasła przez telefon. (Dial-up)
Hasła przez telefon są inną opcjonalną linią obrony dla systemów,
które umożliwiają dostęp przez telefon. Jeśli masz system z dużą
ilośćią użytkowników łączących się lokalnie albo poprzez sieć, ale
chcesz ograniczyć kto może sie połączyć, to "hasła przez telefon"
są dla ciebie. Aby właczyć "hasła przez telefon" musisz wyedytować
plik /etc/login.defs i upewnić się, że
DIALUPS_CHECK_ENAB jest ustawione na yes.
Są dwa pliki, które zawierają informacje o połączeniach przez
telefon: /etc/dialups, który zawiera "tty" (jeden na linię
bez "/dev/"). Jeśli dany tty jest tam zawarty to połączenie jest
sprawdzane; oraz /etc/d_passwd z pełną ścieżką dostępu do
powłoki oraz opcjonalnym hasłem.
Jeśli użytkownik zaloguje się na linię, która jest podana w
/etc/diulups i jego powłoka jest podana w
/etc/d_passwd, to będzie mógł się zalogować tylko po
podaniu poprawnego hasła.
Innym użytecznym celem "haseł przez telefon" może być
ustawienie linii, która pozwala tylko na połączenia konkretnego
rodzaju (np. PPP lub/i UUCP). Jeśli użytkownik próbuje się połączyć
inaczej (np. listą powłok), to musi znać hasło na tę linię.
Zanim będziesz mógł używać tych właściwości musisz stworzyć te
pliki.
Polecenie dpasswd przypisuje hasła do konkretnych powłok
zawartych w pliku /etc/d_passwd. Więcej informacji
znajdziesz na stronie podręcznika systemowego.
8. Obsługa przesłanianych haseł w programach w C.
Dodawanie obsługi haseł przesłanianych do programów jest całkiem
proste. Jedynym problemem jest to, że program musi zostać
uruchomiony z prawami "root-a", aby mieć dostęp do pliku
/etc/shadow.
Tutaj pojawia się jeden wielki problem: podczas pisania takich
programów należy się trzymać jak najściślej zasad
bezpieczeństwa. Na przykład jeśli program posiada wyjście do
powłoki, to nie może się to zdarzyć na prawach "root-a".
Jeśli program musi mieć dostęp do /etc/shadow i nie
potrzebuje więcej praw "root-a", to lepiej uruchomić go z prawami
grupy "shadow". Program xlock jest przykładem takiego
programu.
W przykładzie podanym niżej, pppd-1.2.1d jest już
uruchomiony z prawami "root-a", tak więc dodanie obsługi haseł
przesłanianych nie powinno zagrozić bezpieczeństwu.
8.1 Pliki nagłówkowe.
Pliki te powinny znajdować się w /usr/include/shadow.
Powinien tam być także plik /usr/include/shadow.h, ale
będzie to symboliczne dołaczenie do
/usr/include/shadow/shadow.h.
Aby dodać obsługę haseł przesłanianych do programu, musisz dołączyć
pliki nagłówkowe:
#include <shadow/shadow.h>
#include <shadow/pwauth.h>
Dobrym pomysłem byłoby użycie dyrektyw kompilatora, aby skompilować
warunkowo kod z obsługą haseł przesłanianych. (tak jak w
przykładzie poniżej.)
8.2 Biblioteka libshadow.a
Biblioteka ta została zainstalowana w /usr/lib jak
instalowałeś pakiet Shadow Suite.
Kiedy kompilujesz obsługę przesłaniancyh haseł w programie trzeba
poinformować "linker-a", aby dołączył bibliotekę
libshadow.a.
Robi się to tak:
gcc program.c -o program -lshadow
Chociaż jak zobaczymy w poniższym przykładzie, większość dużych
programów używa plików Makefile i ma zwykle zmienną
LIBS=..., którą się modyfikuje.
8.3 Struktura Shadow.
Biblioteka libshadow.a używa struktury spwd dla
informacji, które otrzyma z pliku /etc/shadow. Oto
definicja tej struktury wzięta z /usr/include/shadow/shadow.h:
struct spwd
{
char *sp_namp; /* identyfikator */
char *sp_pwdp; /* zakodowane hasło */
sptime sp_lstchg; /* data ostatniej zmiany */
sptime sp_min; /* minimalna ilość dni między zmianami */
sptime sp_max; /* maksymalna ilość dni między zmianami */
sptime sp_warn; /* ilość dni przed wygaśnięciem hasła
kiedy będzie wysyłane ostrzeżenie */
sptime sp_inact; /* ilość dni, po jakiej wygasa hasło
dopóki konto nie będzie zablokowane */
sptime sp_expire; /* ilość dni od 01.01.1970 dopóki
konto nie wygaśnie */
unsigned long sp_flag; /* zarezerwowane na przyszłość */
};
Do pola sp_pwdp można dodatkowo wstawić nawzę programu:
identyfikator:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::
Oznacza to, że oprócz podania hasła będzie wykonany program
/sbin/extra, który wykona dalszą autentykację. Wywołany program
otrzyma identyfikator i przełącznik, który określi dlaczego został
wywołany. Więcej informacji znajdziesz w
/usr/include/shadow/pwauth.h i pwauth.c.
Oznacza to, że powinniśmy użyć funkcji pwauth do
przeprowadzenia poprawnej autentykacji, ponieważ zajmie się ona
także drugą autentykacją. Jest to użyte w przykładzie poniżej.
Autor pakietu Shadow Suite twierdzi, że odkąd większość
programów tego nie stosuje, może to zostać usunięte lub zmienione w
przyszłych wersjach pakietu.
8.4 Funkcje pakietu Shadow Suite.
Plik shadow.h zawiera deklaracje funkcji zawartych w
bibliotece libshadow.a:
extern void setspent __P ((void));
extern void endspent __P ((void));
extern struct spwd *sgetspent __P ((__const char *__string));
extern struct spwd *fgetspent __P ((FILE *__fp));
extern struct spwd *getspent __P ((void));
extern struct spwd *getspnam __P ((__const char *__name));
extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));
Funkcja, którą użyjemy w przykładzie to getspnam, która
odczyta strukturę spwd dla podanego identyfikatora.
8.5 Przykład.
Jest to przykład na dodanie obsługi haseł przesłanianych do
programu, który tego potrzebuje, ale nie ma domyślnie włączonego.
Przykład ten używa serwera Point-to-Point Protocol
(pppd-1.2.1d), który ma tryb do autentykacji PAP używając
identyfikatora i hasła z pliku /etc/passwd zamiast z
plików PAP czy CHAP. Nie musisz dodawać tego
kodu do pppd-2.2.0, ponieważ on już tam jest.
Ta właściwość pppd przypuszczalnie nie jest często używana, ale
jeśli zainstalowałeś Shadow Suite, to serwer ten nie
będzie działał ponieważ hasła nie są już zapisywane w
/etc/passwd.
Kod do autentykacji użytkowników przez pppd-1.2.1d
umieszczony jest w pliku /usr/src/pppd-1.2.1d/pppd/auth.c.
Poniższy kod musi zostać dodany na początku pliku gdzie znajdują
się wszystkie inne dyrektywy #include. Otoczyliśmy je
dyrektywami warunkowymi (czyli skompilują się tylko jeśli
kompilujemy z właczoną obsługą haseł przesłanianych).
#ifdef HAS_SHADOW
#include <shadow.h>
#include <shadow/pwauth.h>
#endif
Następnym krokiem jest modyfikacja właściwiego kodu. Ciągle
modyfikujemy plik auth.c.
Funkcja auth.c przed modyfikacją:
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
/*
* XXX If no passwd, let them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHACK);
}
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
Hasło użytkownika jest umieszczane w pw->pw_passwd, tak że
wszystko co musimy zrobić, to dodać funkcję
getspnam. Umieści to hasło w spwd->sp_pwdp.
Dodamy funkcję pwauth, aby przeprowadzić właściwą
autentykację. Przeprowadzi to także drugą autentykację jeśli plik
shadow jest odpowiednio ustawiony.
Funkcja auth.c po modyfikacji do obsługi haseł
przesłanianych:
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* This function has been modified to support the Linux Shadow Password
* Suite if USE_SHADOW is defined.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
#ifdef USE_SHADOW
struct spwd *spwd;
struct spwd *getspnam();
#endif
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
#ifdef USE_SHADOW
spwd = getspnam(user);
if (spwd)
pw->pw_passwd = spwd->sp-pwdp;
#endif
/*
* XXX If no passwd, let NOT them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHNAK);
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}
#else
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
#endif
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
Po dokładnym prześledzaniu tego kodu okaże się, że zrobiliśmy
jeszcze jedną zmianę. Oryginalna wersja pozwalała na dostęp
(zwracała UPAP_AUTHACK) jeśli nie było hasła w
pliku /etc/passwd. Nie jest to dobrze, ponieważ popularnym
użyciem tej właściwości programu login jest używanie
jednego konta, na dostęp do programu PPP, a potem sprawdzenie
identyfikatora i hasła dostarczonych przez PAP z tymi w plikach
/etc/passwd i /etc/shadow.
Tak więc jeśli ustwilibyśmy oryginalną wersję, aby uruchamiała
powłokę dla użytkownika np. ppp, to każdy mógłby uzyskać
połączenie ppp przez podanie identyfikatora ppp i pustego hasła.
Poprawiliśmy to przez zwrócenie UPAP_AUTHNAK zamiast
UPAP_AUTHACK jeśli pole z hasłem jest puste.
Interesujące jest to, że pppd-2.2.0 ma ten sam problem.
Następnie musimy zmodyfikować plik Makefile tak, żeby
pojawiły się dwie rzeczy:
USE_SHADOW musi być zdefiniowane i libshadow.a
musi być dodana w procesie "linkowania".
Wyedytuj plik Makefile i dodaj:
LIBS = -lshadow
Potem znajdź linię:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t
i zmień ją na:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW
Teraz kompilacja i instalacja.
9. Często zadawane pytania.
P: Kiedyś kontrolowałem terminale z jakich mógł się
logować "root" przez plik /etc/securettys, teraz nie
wygląda na to żeby działało. Co jest grane ?
O: Teraz kiedy pakiet Shadow Suite jest
zainstalowany plik /etc/securettys nie ma żadnego
znaczenia. Terminale, z których może się zalogować "root" są teraz
podawane w pliku konfiguracyjnym /etc/login.defs. Pozycja
w tym pliku może wskazywać na jakiś inny plik.
P: Zainstalowałem pakiet Shadow Suite i nie mogę
się zalogować, co przegapiłem ?
O; Przypuszczalnie zainstalowałeś pakiet i zapomniałeś
uruchomić program pwconv albo zapomniałeś skopiować
/etc/npasswd na /etc/passwd oraz
/etc/nshadow na /etc/shadow. Możesz musisz także
skopiować login.defs do /etc.
P: W sekcji o "xlock-u" było napisane, żeby zmienić grupę
pliku /etc/shadow na shadow, ale ja nie mam takiej grupy -
co mam zrobić ?
O: Możesz ją dodać. Po prostu wyedytuj plik
/etc/group i dodaj linię definiującą grupę shadow. Musisz
się upewnić, że numer grupy nie jest używany przez żadną inną i
musisz ją dodać przed pozycją nogroup. Albo po prostu
ustaw bit SUID dla programu xlock.
P: Jest jakaś lista dyskusyjna dla Linux Shadow Password
Suite ?
O: Tak, ale jest ona dla rozwijających ten pakiet i dla
testujących wersje BETA. Możesz się zapisać na tę listę
wysyłając list na adres shadow-list-request@neptune.cin.net
o tytule subscribe. Na liście tej dyskutuje się właściwie
o konkretnej serii shadow-YYMMSS. Powinieneś się na nią
zapisać jeśli chcesz być włączony do dalszego rozwoju albo jeśli
zainstalowałeś sobie ten pakiet i chcesz wiedzieć o nowszych
wersjach.
P: Zainstalowałem Shadow Suite, ale kiedy używam
polecenia userdel dostaję: "userdel: cannot open shadow
group file" - co zrobiłem źle ?
O: Skompilowałeś pakiet z włączoną opcją
SHADOWGRP, ale nie masz pliku /etc/gshadow.
Musisz albo wyedytować plik config.h i skompilować
ponownie pakiet albo stworzyć plik /etc/gshadow. Zobacz
sekcję dotyczącą przesłanianych grup.
P: Zainstalowałem Shadow Suite, ale zakodowane
hasła pojawiają się w pliku /etc/passwd, co jest ?
O: Albo właczyłeś opcję AUTOSHADOW w pliku
config.h, albo twoja biblioteka libc była
skompilowana z opcją SAHDOW_COMPAT. Musisz dowiedzieć się,
które z tych dwóch jest prawdziwe i skompilować ponownie.
10. Prawa autorskie podziękowania i różne.
10.1 Prawa autorskie
Linux Shadow Password HOWTO jest chronione prawami autorskimi
Michaela H. Jacksona.
Dozwolone jest dystrybuowanie kopii tego dokumentu zakładając, że
wzmianka o prawach autorskich i to pozwolenie jest zawarte we
wszystkich kopiach.
Dozwolone jest dytrybuowanie i kopiowanie modyfikowanych wersji
tego dokumentu pod warunkami kopiowania z powyższego akapitu,
zakładając, że zawarta jest jasna informacja, że jest to wersja
modyfikowana tego dokumentu.
Dozwolone jest kopiowanie i dystrybucja tłumaczeń tego dokumentu na
inne języki pod warunkami dla wersji modyfikowanych wymienionymi
wyżej.
Dozwolone jest konwertowanie tego dokumentu na inne media pod
warunkami podanymi powyżej dla wersji modyfikowanych zakładając, że
informacja o źródle nowego dokumentu jest zawarta przez oczywisty
odnośnik do dokumentu źródłowego w nowej wersji tego
dokumentu. Jeśli występują jakieś wątpliowści co do słowa
"oczywiste", właściciel praw autorskich rezerwuje sobie prawo
decyzji.
10.2 Podziękowania i różne.
Przykłady kodów dla auth.c zostały wzięte z pppd-1.2.1d i
ppp-2.1.0e, Copyright (c) 1993 and The Australian National
University oraz Copyright (c) 1989 Carnegie Mellon University.
Podziękowania dla Marka Michałkiewicza
<marekm@i17linuxb.ists.pwr.wroc.pl> za napisanie i opiekę nad
pakietem Shadow Suite dla Linux-a oraz za przejrzenie i
komentarze do tego dokumentu.
Podziękowania dla Rona Tidda <rtidd@tscnet.com> za jego
pomocne przejrzenie i testowanie.
Podziękowania dla wszystkich, którzy przysłali do mnie komentarze,
aby pomóc w ulepszeniu tego dokumentu.
Jeśli masz jakieś uwagi lub sugestie to napisz do mnie proszę,
z poważaniem
Michael H. Jackson <mhjack@tscnet.com>
10.3 Od tłumacza.
Tłumaczenie to jest chronione prawami autorskimi © Bartosza
Maruszewskiego.
Dozwolone jest rozprowadzanie i dystrybucja na prawach takich
samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne,
składniowe, techniczne to pisz do mnie:
B.Maruszewski@jtz.org.plOficjalną stroną tłumaczeń HOWTO jest
http://www.jtz.org.pl/Aktualne wersje przetłumaczonych dokumentów znajdują się na
tejże stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /HOWTO/.
Przetłumaczone przeze mnie dokumenty znajdują się także na
mojej stronie WWW. Są tam też odwołania do Polskiej Strony
Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to
wyślij list o treści subscribe jtz Imię Nazwisko na adres
majordomo@ippt.gov.pl
Zmiany w tym dokumencie wprowadzone przez tłumacza to:
- "chmod 700 /etc/login/defs" na "chmod 600 /etc/login.defs"
plik ten nie musi być wykonywalny,
- "cp passwd ~passwd" na "cp passwd ~/passwd" - ewidentna
literówka autora
- "chmod 600 ~passwd" na "chmod 600 ~/passwd" - to samo
- przy zmianie grupy pliku /etc/shadow dodane "cd /etc"
- oraz polskie serwery WWW i ftp.
Wyszukiwarka
Podobne podstrony:
Shadow Password HOWTO pl 10 (2)Shadow Password HOWTO pl 8 (2)Shadow Password HOWTO pl (3)Shadow Password HOWTO pl 5 (2)Shadow Password HOWTO pl 6 (2)Shadow Password HOWTO pl 9 (2)Shadow Password HOWTO pl 2 (2)Shadow Password HOWTO pl 7 (2)Shadow Password HOWTO pl 1 (2)Shadow Password HOWTO pl 4 (2)Shadow Password HOWTO pl 3 (2)Shadow Password HOWTO plshadow password howto 4 wrjj4xl2rttpywxk645hll3i63bvo7zfmqmiewy wrjj4xl2rttpywxk645hll3i63bvo7zfmqmishadow password howto 5 xwj2yqx7sdr7adin3jsjtftaoqyivxcflwawaqa xwj2yqx7sdr7adin3jsjtftaoqyivxcflwawshadow password howto 2 foxyypsfur2dgvcm757tzpjjjqzxkvhcxqxuazi foxyypsfur2dgvcm757tzpjjjqzxkvhcxqxushadow password howto xaxuxvyqvflgb5m452rbxlszzlk756szuoenxpa xaxuxvyqvflgb5m452rbxlszzlk756szuoenxpshadow password howto 6 wekeaom5hhmqmfgscm4mih3yeed3zer56aqewwa wekeaom5hhmqmfgscm4mih3yeed3zer56aqeshadow password howto 9 rrzkcxlxnah6g6g76dgcjvmvfeeihhseu43rxfi rrzkcxlxnah6g6g76dgcjvmvfeeihhseu43rshadow password howto 1 jvl6nxop7fpn62s67zmft74rytj65xu7oqy4xdi jvl6nxop7fpn62s67zmft74rytj65xu7oqy4więcej podobnych podstron