AddUser-NG, posiada bardzo elastyczną konfigurację, która pozwoli zautomatyzować proces dodawania kont systemowych, prześledźmy więc jej możliwości.
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ł).
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ść ...
[GrupaOpcji]
w przypadku tego pliku jest
jedna, nosi nazwę [adduser]
i
nie powinna być zmieniana.
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.
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
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”.
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.
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)
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.
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).