Konfiguracja

AddUser-NG, posiada bardzo elastyczną konfigurację, która pozwoli zautomatyzować proces dodawania kont systemowych, prześledźmy więc jej możliwości.

adduser-ng.conf

Plik ten, jest konfiguracją samego programu, nie jego zachowania, miejscem skąd program pobiera informacje o lokalizacji swoich plików (dokumentacji, katalogu z grupami, itd). Nie służy natomiast do konfiguracji wtyczek. Do tego służą „pliki grup” (o których jest następny podrozdział).

Uwaga!

Praktycznie rzecz biorąc, po instalacji programu, jedyną opcją jaką użytkownik powinien zmieniać w tym pliku, jest wybór interfejsu użytkownika, pozostałe opcje, powinny pozostać nienaruszone, chyba, że naprawdę wiesz co robisz.

Plik ten posiada składnię „dosini”, a więc:

[GrupaOpcji]

# komentarz
opcja_1 = wartość
...
opcja_N = wartość

...
                    

WAŻNE

[GrupaOpcji] w przypadku tego pliku jest jedna, nosi nazwę [adduser] i nie powinna być zmieniana.

Dostępne opcje

  • groups_dir - opcja ta, określa katalog w którym znajdują się pliki konfiguracyjne grup

  • default_ui - opcja ta, określa interfejs użytkownika, który ma być używany do komunikacji z użytkownikiem

  • documentation_dir - opcja ta określa katalog, w którym przechowywana jest dokumentacja każdej z wtyczek.

Pliki grup (konfiguracja pluginów)

W systemach *nixowych, naturalnym faktem jest przynależność danego użytkownika do danej/danych grup systemowych. AddUser-NG, posiada podobną filozofię, używając jako swą główną konfigurację „plików grup”. Fakt ten, każdy może tłumaczyć sobie w różny sposób. Grupa AddUser-NG, może być traktowana jako grupa pluginów uruchomianych podczas dodawania użytkownika, bądź też grupa systemowa, dla której zakładane jest konto. Najlepszym sposobem uświadomienia sobie czym jest plik grupy, jest przykład, a więc, przejdźmy do dalszego omawiania.

Pliki grup, znajdują się w katalogu oznaczonym przez opcję groups_dir w głównym pliku konfiguracyjnym. Zazwyczaj jest to katalog /etc/AddUser-NG/groups/. Nazwa pliku grupy może być dowolna, wystarczy, iż użytkownik będzie ją pamiętał, ponieważ jako jeden z parametrów wywołania programu, wymagane jest podanie nazwy grupy do której użytkownik ma przynależeć (czyli nazwy pliku grupy).

Plik grupy, posiada również jak w przypadku głównego pliku konfiguracyjnego składnię „dosini”, z tym, że ma ona w tym przypadku następującą postać:

[Nazwa_Pliginu_Do_Załadowania_przez_program]

# komentarz
jakaś_opcja_tego_pluginu = wartość

# a ta opcja ma przypisane słowo kluczowe
inna_opcja_np_login = %(main.login)

# ta opcja jest zakomentowana, więc program się o nią zapyta
# opcja = wartość

# ta opcja ma pustą wartość, i tak ma być, program się
# nie zapyta o nią, po prostu przyjmie tę pustą wartość
opcja =

[Drugi_w_kolejności_ładowany_plugin]

jakaś_opcja_drugiego_pluginu = wartość

[Trzeci]

opcja = %(Drugi_w_kolejności_ładowany_plugin.jakaś_opcja_drugiego_pluginu)
...
                    

Analizując przykład, instancja [NazwaPluginu] , oznacza, iż AddUser-NG ma załadować plugin o nazwie „NazwaPluginu”. Po wystąpieniu tej instancji, następuje konfiguracja danego pluginu, o składni:

  • opcja = wartość - czego chyba nie trzeba tłumaczyć

  • opcja = %(SŁOWO_KLUCZOWE) - AddUser-NG obsługuje specjalne słowa kluczowe, o których za chwilę

  • # komentarz - wszystko co znajduje się po znaku „#” jest traktowane jak komentarze i pomijane

WAŻNE

Kolejność występowania instancji „[NazwaPluginu]” jest ważna! To w jakiej kolejności począwszy od początku dokumentu występują nazwy pluginów, implikuje kolejność w jakiej zostaną skonfigurowane, a następnie „wykonane”.

Słowa kluczowe - (keywords)

Jak wyżej zostało wspomniane, AddUser-NG wspiera słowa kluczowe, które występują jako wartość dla opcji pluginu. Ogólnie postać słowa kluczowego wygląda następująco:

  • %(Nazwapluginu.Opcja) - co oznacza: pobierz wartość opcji „Opcja” pluginu „ Nazwapluginu” oraz podmień ją, a więc słowo kluczowe %(Plugin.Opcja) będzie podmienione porządaną wartością. np:

    Przykład 3.1. Przykład słowa kluczowego

    %(UserAdd.home_dir)

    będzie zastąpione katalogiem domowym zakładanego użytkownika

  • %(Nazwapluginu.Opcja-wartośćnumeryczna) - co oznacza: pobierz „wartośćnumeryczna” początkowych znaków opcji „Opcja” pluginu „Nazwapluginu” oraz podmień ją. np:

    Przykład 3.2. Przykład słowa kluczowego (pobierającego znaki początkowe)

    %(UserAdd.comment-1)

    będzie zastąpione pierwszym znakiem komentarza (Gecos)

  • %(Nazwapluginu.Opcja+wartośćnumeryczna) - co oznacza: pobierz „wartośćnumeryczna ” końcowych znaków opcji „Opcja ” pluginu „Nazwapluginu” oraz podmień ją, np:

    Przykład 3.3. Przykład słowa kluczowego (pobierającego znaki końcowe)

    %(GroupAdd.group_name+3)

    będzie zastąpione trzema końcowymi znakami nowo utworzonej grupy dla użytkownika

Istnieją ponad to, dwa dodatkowe słowa kluczowe, które nie są częścią żadnego z pluginów:

  • %(main.group) - to słowo kluczowe jest podmieniane z wartością nazwy pliku grupy (bądź też w innym rozumieniu po prostu grupy), do której ma zostać dodany użytkownik. Inaczej mówiąc jest to po prostu wartość pierwszego parametru podawanego przy uruchomieniu programu.

  • %(main.login) - to słowo kluczowe natomiast, jest wartością loginu użytkownika, który jest właśnie tworzony (inaczej, jest to drugiego parametru podawanego przy uruchomieniu programu.

Notatka

Oczywiście i do tych słów kluczowych, mogą również być stosowane operatory wyłuskania znaków „-” i „+”.

Przykład 3.4. Wykorzystanie pozostałych słów kluczowych

[UserAdd]
# to jest przydatne dla osób które zakładają bardzo dużo kont i chcą je
# grupować alfabetycznie
home_dir = %(main.login-1)

WAŻNE

Istotne jest, aby zrozumieć, iż dana wartość musi być wcześniej określona przez program aby słowo kluczowe mogło być wykorzystane. Rozważmy to na przykładach. Weźmy np. pod uwagę, taki oto plik konfiguracyjny:

Przykład 3.5. Przykład prawidłowego wykorzystania słów kluczowych

[UserAdd]

# słowo kluczowe %(main.login) jest określone automatycznie, po starcie
# programu, a więc możemy je stosować w każdym momencie
home_dir = /home/%(main.login)

# opcja 'home_dir' występuje powyżej, a więc słowo kluczowe
# %(UserAdd.home_dir) także jest już w tym momencie określone, możemy więc
# je stosować
comment = %(UserAdd.home_dir)
                            

Jak wynika z komentarzy zawartych w przykładzie, tak zadeklarowany plik grupy, jest prawidłowy. Oczywiście należy go traktować z przymrużeniem oka, ponieważ definiuje, iż jako komentarz dla nowo zakładanego użytkownika, należy użyć wartości jego katalogu domowego, ale chodzi tu jedynie o przykład. Dla kontrastu, przyjżyjmy się teraz źle zadeklarowanemu plikowi:

Przykład 3.6. Przykład błędnego wykorzystania słów kluczowych


# najpierw zostanie skonfigurowany (i wykonany) plugin dodawania grupy
# systemowej
[GroupAdd]

# nazwa nowo dodawanej grupy, wykorzystuje jako słowo kluczowe wartość opcji
# 'comment' pluginu 'UserAdd', co jest błędne, ponieważ opcja ta, nie posiada
# jeszcze określonej wartości, jako że, plugin 'UserAdd' będzie skonfigurowany
# później (po tym pluginie), na co wskazują następujące linie
group_name = %(UserAdd.comment)

# załaduj plugin UserAdd, z tym że, zostanie on dopiero skonfigurowany po
# skonfigurowaniu pluginu GrouAdd, na co wskazuje kolejność występowania tych
# pluginów w tym pliku
[UserAdd]

# dopiero teraz zostanie określona wartość tej opcji, co powoduje błędne
# skonfigurowanie pliku grupy
comment = Użytkownik %(main.login), grupy %(main.group)
                            

Myśle, iż komentarze wykorzystane w przykładzie, również rozjaśniły dlaczego ten plik został zadeklarowany błędnie.

Rady dotyczące konfiguracji plików grup

A więc wiesz już jak skonfigurować AddUser-NG, nie pozostaje więc nic innego jak zabrać się za tworzeniw własnych grup, zanim jednak, pozwól udzielić sobie kilka rad.

Mimo tego, iż każdy plugin może być załadowany w dowolnym momencie (jak widziałeś, Ty decydujesz o kolejności ładowania pluginów), dobrze przyjętą praktyką będzie, jeżeli:

  • przy konfiguracji takiej, że zakładana jest dla każdego użytkownika osobna grupa (jak to robi np. adduser), jako pierwszy ładuj zawsze plugin GroupAdd (grupa musi przecież istnieć, zanim dodany będzie użytkownik), a następnie ładuj będzie plugin UserAdd (czyli właściwe dodawanie użytkownika).

  • Jeżeli nawet nie zakładasz osobnej grupy każdemu nowemu użytkownikowi (nie potrzebny jest wtedy plugin GroupAdd), to jako pierwszą w konfiguracji umieszczaj zawsze wtyczkę UserAdd (będzie wtedy jako pierwsza ładowana, czyli konfigurowana i „wykonywana”. Przestrzeganie tego uchroni Cię przed nieporządanymi błędami (np. ustawianie quoty przez wtyczkę Quota jeszcze nieistniejącemu użytkownikowi).