« wróć do listy
Następny Wpis NA LIŚCIE (W DÓŁ)
Plik /etc/password - Dodawanie nowych użytkowników - cz. 2 Fragmenty artykułów z książek wydawnictwa Helion.pl
13 osób twierdzi: warto przeczytać
Następny Wpis NA LIŚCIE (W GÓRĘ)
Kubuntu 11.10 po instalacji KDEFamily.pl
8 osób twierdzi: warto przeczytać

Trzecia część rozdziału nr 7 książki:
Unix i Linux. Przewodnik administratora systemów. Wydanie IV

7.2. PLIKI /ETC/SHADOW i /ETC/SECURITY/PASSWD

Plik shadow (zwany też plikiem przesłaniania haseł lub plikiem cieni) może być odczytany tylko przez superużytkownika. W pliku przechowywane są zaszyfrowane hasła, chronione przed wścibskimi oczami i programami do łamania haseł. Mieszczą się w nim również pewne dodatkowe informacje o kontach, które nie były uwzględnione w pierwotnym formacie /etc/passwd. Obecnie przesłanianie haseł jest domyślnie włączone niemal we wszystkich systemach.

W systemie AIX plik przechowujący zaszyfrowane hasła nosi nazwę /etc/security/passwd, podczas gdy we wszystkich pozostałych systemach jest to /etc/shadow. Oczywiście, ich formaty i zawartość są różne. Najpierw przyjrzymy się plikowi /etc/shadow.

Plik shadow nie jest nadzbiorem pliku passwd, a plik passwd nie jest generowany na jego podstawie. Musisz utrzymywać oba te pliki lub skorzystać z takich narzędzi jak useradd, które będą to robić za Ciebie. Podobnie jak /etc/passwd, plik /etc/shadow zawiera jeden wiersz dla każdego użytkownika. Każdy wiersz to dziewięć pól rozdzielonych dwukropkami, a przeznaczonych na:

  • nazwę użytkownika,
  • zaszyfrowane hasło,
  • datę ostatniej zmiany hasła,
  • minimalną liczbę dni między zmianami hasła,
  • maksymalną liczbę dni między zmianami hasła,
  • liczbę dni określającą wyprzedzenie, z jakim należy ostrzegać użytkowników o wygaśnięciu hasła,
  • liczbę dni od wygaśnięcia hasła, po upływie których konto zostanie wyłączone (Linux) lub liczbę dni, po których konto automatycznie wygaśnie (Solaris),
  • datę ważności konta,
  • pole zarezerwowane, które obecnie jest zawsze puste, z wyjątkiem systemu Solaris.

Jedyne wymagane wartości to nazwa użytkownika i hasło. W pliku /etc/shadow pola z datami bezwzględnymi podawane są jako liczba dni (nie sekund), jakie upłynęły od 1 stycznia 1970 roku, co nie jest standardowym sposobem odliczania czasu w systemach Unix i Linux. Możesz jednak zamienić sekundy na dni, jakie upłynęły od początku ery Uniksa, stosując polecenie:

solaris$ expr `date +%s` / 86400

(Dzień ma 86 400 sekund: 60*60*24)

Typowy wpis w pliku shadow wygląda tak:

millert:$md5$em5J8hL$a$iQ3pXe0sakdRaRFyy7Ppj.:14469:0:180:14:::

Oto bardziej szczegółowe opisy tych pól.

  • Nazwa użytkownika jest taka sama jak w pliku /etc/passwd. Pole łączy wpisy użytkownika w plikach passwd i shadow.
  • Zaszyfrowane hasło jest identyczne w koncepcji i wykonaniu z tym, które kiedyś przechowywane było w pliku /etc/passwd; tutaj przedstawione zostało fikcyjne hasło MD5 z systemu Solaris.
  • W polu ostatniej zmiany zapisany jest czas, w którym hasło użytkownika było ostatnio zmieniane. Pole to jest wypełniane przez polecenie passwd.
  • Czwarte pole określa liczbę dni, które muszą upłynąć między zmianami hasła. Chodziło o to, aby zmusić użytkownika do autentycznej zmiany hasła, uniemożliwiając mu natychmiastowe przywrócenie poprzedniego hasła po wymuszonej zmianie. Uważamy jednak, że funkcja ta może być nieco niebezpieczna w razie naruszenia bezpieczeństwa. Zalecamy ustawienie w tym polu wartości 0.
  • Piąte pole określa maksymalną liczbę dozwolonych dni między zmianami hasła. Dzięki temu administrator może wymusić zmiany haseł; więcej informacji na ten temat można znaleźć na stronie 1111. W systemie Linux rzeczywista maksymalna liczba dni jest sumą wartości tego pola oraz wartości z pola siódmego (tzw. okres łaski).
  • Szóste pole określa liczbę dni przed wygaśnięciem hasła, kiedy program login powinien ostrzec użytkownika o nieuchronnie zbliżającym się terminie.
  • W systemach Solaris i HP-UX siódme pole interpretowane jest inaczej niż w systemie Linux. W Linuksie siódme pole określa, ile dni po przekroczeniu maksymalnego terminu ważności hasła należy odczekać, zanim konto zostanie zablokowane.
    W systemach Solaris i HP-UX działanie tego pola wygląda następująco: jeśli użytkownik nie zaloguje się w czasie wyznaczonym przez liczbę dni podaną w siódmym polu, konto zostanie wyłączone. Nieużywane konta są ulubionym celem hakerów, a ta funkcja daje możliwość pozbycia się takich kont. Działa to jednak tylko wtedy, gdy użytkownik jest wymieniony w pliku /var/adm/lastlog, wiec konta użytkowników, którzy nigdy się nie zalogowali, nie będą automatycznie wyłączane. A zatem funkcja ta nie sprawdzi się w środowisku sieciowym, ponieważ każdy komputer ma własny plik lastlog.
  • Ósme pole określa dzień (liczony od 1 stycznia 1970 roku) wygaśnięcia konta użytkownika. Po tej dacie użytkownik nie będzie mógł się zalogować, chyba że administrator ponownie wprowadzi tu jakąś wartość. Jeśli pole pozostanie puste, konto nigdy nie wygaśnie.
    W systemie Linux można ustawić datę wygaśnięcia za pomocą polecenia usermod, które przyjmuje daty w formacie rrrr-mm-dd. W systemie Solaris polecenie usermod potrafi również obliczać dni, jakie upłynęły od początku ery Uniksa. Akceptuje ono daty w ok. trzydziestu formatach określonych w pliku /etc/datemsk, niestety, nie ma wśród formatu rrrr-mm-dd używanego w systemie Linux.
  • Dziewiąte pole jest zarezerwowane do wykorzystania w przyszłości. Jest to uznawane przez systemy Linux i HP-UX, ale Solaris wykorzystuje ostatnie cztery bity do odliczania nieudanych prób zalogowania.

Popatrzmy ponownie na nasz przykładowy wiersz z pliku shadow:

millert:$md5$em5J8hL$a$iQ3pXe0sakdRaRFyy7Ppj.:14469:0:180:14:::

W tym przykładzie użytkownik millert po raz ostatni zmieniał swoje hasło 13 sierpnia 2009 roku. Hasło musi zostać zmienione ponownie w ciągu 180 dni, a przez ostatnie dwa tygodnie przed tym terminem użytkownik millert będzie otrzymywał ostrzeżenia o konieczności zmiany hasła. Konto nie ma ustawionej daty wygaśnięcia.

W systemach Solaris, HP-UX i Linux możesz użyć narzędzia pwconv, aby uzgodnić zawartość pliku shadow z plikiem passwd przez dodanie nowych użytkowników i usunięcie tych, których nie ma już w pliku passwd. W systemie Linux program pwconv wypełnia większość wpisów w pliku shadow wartościami domyślnymi podanymi w pliku /etc/login.defs.

W systemie Solaris użytkownik root za pomocą polecenia passwd -f nazwa_użytkownika może wymusić na użytkowniku zmianę hasła przy następnym logowaniu. Jest to przydatne w sytuacji, gdy regularnie uruchamiasz programy do łamania zabezpieczeń w celu wykrycia źle wybranych (słabo zabezpieczonych) haseł (w systemie Linux ta sama opcja -f umożliwia użytkownikowi zmianę informacji na swój temat).

W systemie AIX nie używa się terminu przesłaniania haseł, ale koncepcja jest taka sama. Zaszyfrowane hasła przechowywane są w pliku /etc/security/passwd, w całkowicie innym formacie niż ten, który występuje w pliku /etc/passwd. Oto przykład pochodzący z czystej instalacji systemu AIX, gdzie domyślnym algorytmem szyfrowania haseł jest crypt: (Wybranie silniejszego algorytmu szyfrowania powinno być jedną z pierwszych czynności do wykonania po zainstalowaniu systemu AIX.)

trent:
password = u10.OaYxRx4qI
lastupdate = 1224876639
flags = ADMCHG

evi:
password = PiIr2qOPabZ.Q
lastupdate = 1235785246
flags =

Ten format nie wymaga dokładniejszych wyjaśnień. Poszczególne wpisy oddzielone są jedną lub kilkoma pustymi wierszami. Taki sam format stosowany jest w większości plików konfiguracyjnych w katalogu /etc/security, gdzie nazwa użytkownika wyznacza dowolny kontrolowany lub rejestrowany obiekt.

System AIX dostarcza niezliczoną liczbę ustawień kontrolujących wszystkie aspekty logowania i haseł. Niektóre opcje dotyczą użytkowników, a inne portów (aby kontrolować porty TTY, na których dany użytkownik może się zalogować). Szczegółowe informacje znajdują się komentarzach zawartych w plikach etc/security/login.cfg i /etc/security/user. Przydatnym poleceniem jest pwdadm, które umożliwia wymuszenie na użytkowniku zmiany hasła przy następnym logowaniu.

7.3. PLIK /ETC/GROUP

Plik /etc/group zawiera nazwy grup w systemie Unix oraz listę członków każdej grupy. Oto fragment pliku group z systemu AIX:

system:!:0:root,pconsole,esaadmin
staff:!:1:ipsec,esaadmin,trent,ben,garth,evi
bin:!:2:root,bin
sys:!:3:root,bin,sys
adm:!:4:bin,adm
nobody:!:4294967294:nobody,lpd

Każdy wiersz odpowiada jednej grupie i zawiera cztery pola:

  • nazwę grupy,
  • zaszyfrowane hasło lub znak zastępczy,
  • numer GID,
  • listę członków grupy, rozdzielonych przecinkami (uważaj, aby nie wpisywać spacji).

Podobnie jak w przypadku pliku /etc/passwd, poszczególne pola rozdzielane są dwukropkami. Dla zachowania zgodności nazwy grup powinny być ograniczone do ośmiu znaków, choć wiele systemów tego nie wymaga. Możliwe jest ustawienie hasła dla grupy, dzięki czemu użytkownicy niebędący jej członkami mogą ją wybrać za pomocą polecenia newgrp, ale rzadko się z tego korzysta. Tylko Linux w pełni obsługuje hasła grup. (Aby ustawić hasło dla grupy w systemie Solaris, trzeba posłużyć się plikiem shadow i ręcznie skopiować oraz wkleić łańcuch z hasłem do pliku /etc/group. Nie ma tu pliku /etc/gshadow ani jego odpowiednika.)

Hasło można ustawić za pomocą polecenia gpasswd; będzie ono przechowywane w zaszyfrowanej formie w pliku /etc/gshadow. Zazwyczaj nie stosuje się haseł dla grup, występują one bardzo rzadko.

Podobnie jak nazwy użytkowników i numery UID, nazwy grup i numery GID powinny być jednakowe na wszystkich komputerach, które współdzielą pliki za pośrednictwem sieciowego plików. Może to być trudne do uzyskania w środowisku heterogenicznym, ponieważ odmienne systemy operacyjne używają różnych numerów GID dla grup o tych samych nazwach.

Odkryliśmy, że najlepszym sposobem poradzenia sobie z tym problemem jest unikanie używania grupy systemowej jako domyślnej grupy logowania użytkownika. Niektóre systemy kontrolują wykonywanie poleceń przy użyciu własności grupy w połączeniu z bitami uprawnień. Niejednolite numery GID na różnych systemach powodują zamieszanie przy instalowaniu i aktualizacji oprogramowania w ramach całej organizacji.

Jeśli użytkownik ma przypisaną domyślną grupę w pliku /etc/passwd, ale nie jest wymieniony jako członek tej grupy w pliku /etc/group, ostatnie słowo należy do /etc/passwd. Członkostwo grupy przydzielane podczas logowania jest połączeniem tego, co znajduje się w plikach passwd i group.

Niektóre systemy ograniczają liczbę grup, do których użytkownik może należeć. Najczęściej spotykany limit to 8 grup, ale w systemie Solaris wynosi on 16, w HP-UX — 20, a w systemach AIX i Linux liczba grup jest pozornie nieograniczona.

Aby zminimalizować potencjalne konflikty z numerami GID przydzielanymi domyślnie przez producentów, zalecamy rozpoczęcie numerowania lokalnych grup od 500 lub wyższych wartości.

Pierwotnie w systemie Unix nowym użytkownikom przydzielana była grupa reprezentująca ich ogólną kategorię, np. „studenci” lub „finanse”. Taka konwencja zwiększała jednak prawdopodobieństwo, że przez niedbałe ustawienia dostępu użytkownicy będą mogli czytać nawzajem swoje pliki, nawet jeśli nie było to intencją właściciela. Aby uniknąć tego problemu, należy tworzyć unikatową grupę dla każdego użytkownika. Grupa może nosić tę samą nazwę co użytkownik. Możesz też przydzielić im ten sam numer GID i UID.

We wszystkich dystrybucjach Linuksa, z wyjątkiem SUSE, narzędzie useradd domyślnie tworzy dla użytkownika prywatną grupę. Systemy Unix domyślnie umieszczają wszystkich nowych użytkowników w tej samej grupie, ale program useradd można w nich skonfigurować w taki sposób, aby obsługiwał również prywatne grupy.

Użytkownik powinien być jedynym członkiem swojej prywatnej grupy. Jeśli chcesz umożliwić użytkownikom współdzielenie plików z wykorzystaniem mechanizmu grup, utwórz w tym celu osobne grupy. Koncepcja grupy prywatnej nie miała na celu zniechęcenia do korzystania z grup jako takich — chodziło po prostu o wprowadzenie bardziej restrykcyjnej grupy domyślnej dla każdego użytkownika, aby nie dochodziło do niezamierzonego udostępniania plików. Możesz również osiągnąć ten cel za pośrednictwem polecenia powłoki umask (patrz strona 238).

Systemy Linux, Solaris i HP-UX zawierają polecenia służące do tworzenia, modyfikowania i usuwania grup: groupadd, groupmod i groupdel. System AIX wymaga ręcznej modyfikacji pliku /etc/group za pomocą edytora tekstu. Zawiera on jednak polecenie grpck służące do sprawdzania składni tego pliku.

cdn.

Pierwsza część:
http://www.linuxportal.pl/artykuly/dodawanie-nowyc/.../-1-id98820

Druga część:
http://www.linuxportal.pl/artykuly/plik-etc-passwo/.../-2-id99146

Udostępnij informacje o Wpisie w sieciach społecznościowych:
Polub LinuxPortal.pl:

Komentarze:

Nie ma jeszcze komentarzy. Dodaj swój komentarz.
logo:
Aby dodać komentarz: zaloguj się ikona LinuxPortal.pl ikona Facebook.com ikona Google+

Wpisy z blogów/ TOP 30dni

Pliki /etc/shadow, /etc/security/passwd i /etc/group - Dodawanie nowych użytkowników - cz.3 Fragmenty artykułów z książek wydawnictwa Helion.pl
41 osób twierdzi: warto przeczytać
Polecenia useradd i newusers - Dodawanie nowych użytkowników - cz.5 Fragmenty artykułów z książek wydawnictwa Helion.pl
39 osób twierdzi: warto przeczytać
Prosta kompilacja jądra jack
35 osób twierdzi: warto przeczytać
Linux for Woman Beings KDEFamily.pl
35 osób twierdzi: warto przeczytać
Wpisy z blogów więcej:
W związku z wejściem w życie 25 maja 2018 roku nowego Rozporządzenia o Ochronie Danych Osobowych znanym jako "RODO" pragniemy poinformować Cię,
w jaki sposób przetwarzane są dane osobowe pozostawiane przez Ciebie podczas korzystania z LinuxPortal.pl.
Zapoznaj się z Polityką prywatności.

Klikając „Zamknij”, zamykasz ten komunikat i wyrażasz zgodę na przetwarzanie tych danych, w tym w plikach cookies, przez LinuxPortal.pl sp. z o.o. w celu realizacji usług zgodnie z Regulaminem.
Zamknij »