Wprowadzenie do Linux useradd polecenie

Dodawanie użytkownika jest jednym z najbardziej podstawowych ćwiczeń na każdym systemie komputerowym; ten artykuł skupia się na tym, jak to zrobić na systemie Linux.

zanim zacznę, chcę wspomnieć o trzech podstawach, o których należy pamiętać. Po pierwsze, podobnie jak w przypadku większości systemów operacyjnych, użytkownicy Linuksa potrzebują konta, aby móc się zalogować. Ten artykuł dotyczy w szczególności kont lokalnych, a nie kont sieciowych, takich jak LDAP. Po drugie, konta mają zarówno nazwę (zwaną nazwą użytkownika), jak i numer (zwany identyfikatorem użytkownika). Po trzecie, użytkownicy są zazwyczaj umieszczani w grupie. Grupy mają również nazwę i identyfikator grupy.

Jak można się spodziewać, Linux zawiera narzędzie wiersza poleceń do dodawania użytkowników; nazywa się useradd. Możesz również znaleźć polecenie adduser. Wiele dystrybucji dodało to dowiązanie symboliczne do polecenia useradd dla wygody.

$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd

przyjrzyjmy się useradd.

Uwaga: domyślne wartości opisane w tym artykule odzwierciedlają wartości w Red Hat Enterprise Linux 8.0. Możesz znaleźć subtelne różnice w tych plikach i pewne domyślne ustawienia w innych dystrybucjach Linuksa lub innych systemach operacyjnych Unix, takich jak FreeBSD lub Solaris.

zachowanie domyślne

podstawowe użycie useradd jest dość proste: użytkownik może zostać dodany po prostu podając swoją nazwę użytkownika.

$ sudo useradd sonny

w tym przykładzie polecenie useradd tworzy konto o nazwie sonny. Tworzy się również grupę o tej samej nazwie i umieszcza się w niej sonny ’ ego, który ma być używany jako grupa podstawowa. Istnieją inne parametry, takie jak język i powłoka, które są stosowane zgodnie z wartościami domyślnymi i ustawionymi w plikach konfiguracyjnych /etc/default/useradd i /etc/login.defs. Jest to na ogół wystarczające dla pojedynczego, osobistego systemu lub małego, jednoserwerowego środowiska biznesowego.

podczas gdy dwa powyższe pliki regulują zachowanie useradd, informacje o użytkowniku są przechowywane w innych plikach znajdujących się w katalogu / etc, do których odwołam się w tym artykule.

plik opis pola (pogrubione—ustawione przez useradd)
passwd przechowuje dane konta użytkownika nazwa użytkownika:unused:uid:gid:comment:homedir:Shell
Shadow przechowuje dane bezpieczeństwa konta użytkownika nazwa użytkownika:hasło:lastchange:minimum:maximum:warn:inactive:expire:unused
Grupa przechowuje szczegóły grupy nazwa grupy:nieużywane:gid:członkowie

konfigurowalne zachowanie

linia poleceń pozwala na dostosowanie do czasów, gdy administrator potrzebuje dokładniejszej kontroli, na przykład do określenia numeru identyfikacyjnego użytkownika.

numery identyfikacyjne użytkowników i grup

domyślnie useradd próbuje użyć tego samego numeru dla identyfikatora użytkownika (UID) i głównego identyfikatora grupy (GID), ale nie ma żadnych gwarancji. Chociaż nie jest konieczne dopasowanie identyfikatorów UID i GID, łatwiej jest administratorom zarządzać nimi, gdy to robią.

mam tylko scenariusz do wyjaśnienia. Załóżmy, że dodam kolejne konto, Tym Razem dla Timmy ’ ego. Porównanie dwóch użytkowników, sonny 'ego i timmy’ ego, pokazuje, że zarówno użytkownicy, jak i ich podstawowe grupy zostały utworzone za pomocą polecenia getent.

$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:

Niestety, ani UID użytkownika, ani główny GID nie pasują. Dzieje się tak, ponieważ domyślnym zachowaniem jest przypisanie kolejnego dostępnego identyfikatora użytkownika do użytkownika, a następnie próba przypisania tego samego numeru do grupy podstawowej. Jeśli jednak ten numer jest już użyty, następny dostępny GID jest przypisywany do grupy. Aby wyjaśnić, co się stało, stawiam hipotezę, że grupa z GID 1001 już istnieje i wprowadź komendę, aby potwierdzić.

$ getent group 1001
book:x:1001:alan

książka grupowa o ID 1001 spowodowała wyłączenie GID o jeden. Jest to przykład, w którym administrator systemu musiałby przejąć większą kontrolę nad procesem tworzenia użytkowników. Aby rozwiązać ten problem, muszę najpierw określić następny dostępny identyfikator użytkownika i grupy, który będzie pasował. Polecenia getent group i getent passwd będą pomocne w określeniu następnej dostępnej liczby. Liczba ta może być przekazana z argumentem-u.

$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:

Innym dobrym powodem do podania identyfikatora są użytkownicy, którzy będą uzyskiwać dostęp do plików w zdalnym systemie za pomocą sieciowego systemu plików (NFS). NFS jest łatwiejszy do administrowania, gdy wszystkie systemy klienckie i serwerowe mają ten sam IDENTYFIKATOR skonfigurowany dla danego użytkownika. Omówię to nieco bardziej szczegółowo w moim artykule na temat używania autofs do montowania akcji NFS.

więcej dostosowywania

bardzo często jednak inne parametry konta muszą być określone dla użytkownika. Oto krótkie przykłady najczęstszych dostosowań, których możesz potrzebować.

komentarz

opcja komentarza jest zwykłym polem tekstowym do podawania krótkiego opisu lub innych informacji za pomocą argumentu-C.

$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash

grupy

użytkownikowi można przypisać jedną grupę podstawową i wiele grup pomocniczych. Argument-g określa nazwę lub GID grupy podstawowej. Jeśli nie jest określona, useradd tworzy podstawową grupę o tej samej nazwie użytkownika (jak pokazano powyżej). Argument-g (wielkie litery) jest używany do przekazywania oddzielonej przecinkami listy grup, do których użytkownik zostanie umieszczony; są one znane jako grupy drugorzędne.

$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)

katalog domowy

domyślnym zachowaniem useradd jest utworzenie katalogu domowego użytkownika w / home. Jednakże różne aspekty katalogu domowego mogą zostać nadpisane następującymi argumentami. -B ustawia inny katalog, w którym można umieścić domy użytkownika. Na przykład /home2 zamiast domyślnego / home.

$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash

– d pozwala określić katalog domowy o innej nazwie niż użytkownik.

$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash

katalog szkieletowy

polecenie-k poleca, aby nowy katalog domowy nowego użytkownika został wypełniony dowolnymi plikami w katalogu/etc / skel. Zazwyczaj są to pliki konfiguracyjne powłoki, ale mogą być wszystkim, co administrator systemu chciałby udostępnić wszystkim nowym użytkownikom.

powłoka

argument-s może być użyty do określenia powłoki. Wartość domyślna jest używana, jeśli nie podano nic innego. Na przykład w poniższym pliku konfiguracyjnym zdefiniowana jest powłoka bash, ale nie jest to wymagane przez zsh.

$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh

bezpieczeństwo

bezpieczeństwo jest istotną częścią zarządzania użytkownikami, więc istnieje kilka opcji dostępnych za pomocą polecenia useradd. Konto użytkownika może otrzymać datę wygaśnięcia w formie RRRR-MM-DD, używając argumentu-E.

$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:

konto można również wyłączyć automatycznie, jeśli hasło wygaśnie. Argument-f ustawi liczbę dni po wygaśnięciu hasła, zanim konto zostanie wyłączone. Zero jest natychmiastowe.

$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::

przykład ze świata rzeczywistego

w praktyce kilka z tych argumentów może być użyte podczas tworzenia nowego konta użytkownika. Na przykład, jeśli muszę utworzyć konto dla Perry ’ ego, mogę użyć następującego polecenia:

$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry

zapoznaj się z powyższymi sekcjami, aby zrozumieć każdą opcję. Sprawdź wyniki za pomocą:

$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)

kilka końcowych porad

polecenie useradd jest „must-know” dla każdego administratora Uniksa (nie tylko Linuksa). Ważne jest, aby zrozumieć wszystkie jego opcje, ponieważ tworzenie użytkownika jest czymś, co chcesz uzyskać za pierwszym razem. Oznacza to posiadanie przemyślanej konwencji nazewnictwa, która obejmuje dedykowany zakres UID/GID zarezerwowany dla użytkowników w całym przedsiębiorstwie, a nie tylko na jednym systemie-szczególnie gdy pracujesz w rozwijającej się organizacji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *