Konfiguracja w ręce użytkowników

Jeżeli zależy nam na samodzielności użytkowników możemy spore możliwości konfiguracyjne przekazać w ich ręce. W ogólności konfiguracja użytkownika może być wprowadza w zależności od usługi na różne sposoby - w przypadku tradycyjnych usług jak poczta i www może to być dostęp shell'owy (ssh), w przypadku jabber'a (XMPP) jest to konfiguracja przez ten protokół (konsola XML/klient) w przypadku voip (SIP) możemy dokonywać konfiguracji poprzez telefon (system menu telefonicznego).

W świetle przedstawionych tutaj rozwiązań warto również rozważyć sposób stworzenia bazy domen z powiązaniem do UID/GID (tabelka domena UID, GID jeden z UID/GID == x, mająca znaczenie informacyjne, bo automatyczne generowanie konfigu z plików użytkownika odpada) a także pamiętać też należy że wywołania adduser z odpowiednimi opcjami umożliwiają określenie identyfikatorów numerycznych jakie przypisujemy użytkownikowi/grupie:

W przypadku omawianego w tym serwisie serwera ejabberd warto także zapewnić okresowy zrzut jego bazy danych (przechowującej m.in. ustawienia wprowadzane przez użytkowników do pliku tekstowego. Można tego dokonać okresowo wywołując: ejabberdctl dump /tmp/ejabberd_`date +%Y%m%dT%H%M%S`.txt. Można by także spróbować parsować tak otrzymany plik celem poumieszczania zrzutu konfiguracji w katalogach odpowiednich użytkowników.

Można by stworzyć system generujący aliasy XMPP (zobacz: JID aliases) i aliasy SIP w oparciu o aliasy pocztowe (virtusertable). Główną wątpliwość budzi fakt iż raczej dość często mogą być potrzebne aliasy tylko jednego z rodzajów a nie wszystkich na raz więc może jednak lepiej utrzymywać niezależne bazy aliasów dla SMTP, XMPP i SIP. Dlatego też jak na razie nie został on prze zemnie przygotowany, ale być może kiedyś to nastąpi i go tu opublikuję.

Oczywiście jak mówimy o konfiguracji to trzeba wspomnieć o programach takich jak chsh i chfn, umożliwiających użytkownikowi odpowiednio zmianę używanego przez niego shella oraz danych zapisanych w polu informacji dodatkowych w /etc/passwd. Za ograniczenie sheli na jakie może być dokonywana zmiana odpowiada plik /etc/shells a za ograniczenie pól opisu w bazie kont które może edytować użytkownik odpowiada wpis CHFN_RESTRICT w /etc/login.defs. O passwd nie będę pisał ;-).

DHCP

Inną usługą gdzie możemy chcieć aby użytkownik mógł samemu mógł wprowadzać dane konfiguracyjne jest DHCP - zamieszczam skrypt generujący w oparciu o listę mac-adresów w pliku użytkownika konfigurację dla serwera dhcp. Założenie działania skryptu jest takie iż identyfikator numeryczny grupy podstawowej użytkownika (dokładniej grupy będącej właścicielem pliku konfiguracyjnego) przekłada się w prosty sposób na system numeracji IP. Zobacz także prototypy skryptów umożliwiających dodawanie MAC adresów przez WWW - add_mac.php add_mac.sh.

System wymaga aby dodać do /etc/sudoers następujące linie:

www-data ALL =NOPASSWD: /usr/local/bin/add_mac.sh
ALL ALL =NOPASSWD: /usr/local/bin/dhcp_user_conf.sh

W przypadku gdy zainstalowany jest usermin możliwe jest stworzenie modułu do edycji listy mac-adresów. Prezentowany skrypt przygotowany został do utworzenia takiego modułu (bazującego na module "plan") dla usermin'a w wrsji 1.340.

Uwaga: prezentowane powyżej programy mają status beta - przechodzą one dopiero testy i mogą pojawić się jakieś błędy.

Asterisk

Popularna w systemach VoIP konfiguracja przez menu telefoniczne jednak nie jest zbyt wygodna i chyba warto umożliwić użytkownikom konfigurację swoich usług poprzez odpowiednie pliki na serwerze - zamieszczam skrypt generujący zbiorczy plik konfiguracyjny dla Asteriska w oparciu o pliki zapisane w katalogach użytkowników (przykładowy konfig). System, automatycznie dodaje do nazw kontekstów identyfikatory użytkowników do których one należą (dzięki czemu nie ma się możliwości grzebania w cudzej konfiguracji), działanie to oparte jest na założeniu że identyfikator odpowiadający użytkownikowi shellowemu jest w prosty sposób zależny od jego UID. System także importuje lub usuwa odpowiednie wpisy bazy danych należące do użytkownika (uwagi i założenia jak poprzednio. A następnie dokonuje zrzutu wpisów bazy danych dotyczących użytkownika do pliku w jego katalogu domowym. Ponadto zamieszczam program umożliwiający dzwonienie do samego siebie w oparciu o mechanizm "auto-dial out call files" (więcej informacji w komentarzu wprowadzającym).

Konieczne jest aby program callme należał do użytkownika na prawch którego działa serwer asteriska oraz maił ustawiony SUID i GUID (chown asterisk:asterisk /usr/local/bin/callme && chmod 6755 /usr/local/bin/callme). Dla wygodnego korzystania z systemu należy dodać do /etc/sudoers następującą linię:

ALL ALL =NOPASSWD: /usr/local/bin/asterisk_user_conf.sh

Uwaga: prezentowane powyżej programy mają status beta - przechodzą one dopiero testy i mogą pojawić się jakieś błędy.



Copyright (c) 1999-2015, Robert Paciorek (http://www.opcode.eu.org/), BSD/MIT-type license


Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.

This text/program is free document/software. Redistribution and use in source and binary forms, with or without modification, ARE PERMITTED provided save this copyright notice. This document/program is distributed WITHOUT any warranty, use at YOUR own risk.

Valid XHTML 1.1 Dokument ten (URL: http://www.opcode.eu.org/usage_and_config/network_services/user_config) należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek, wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: '2014-01-07 19:27:43 (UTC)' (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).