Poniższy tutorial opisuje jak zintegrować serwer wydruku CUPS z LDAP. Pokazuje on również w jaki sposób umożliwić użytkownikom z LDAP logowanie do systemu.
CUPS (Common UNIX Printing System) – system obsługi urządzeń drukujących dla systemów, które opierają się na architekturze Unix.
LDAP (ang. Lightweight Directory Access Protocol) czyli lekki protokół usług katalogowych. Bazuje on na standardzie X.500.
Dane maszyny, na której został została przeprowadzona konfiguracja (w przypadku innych konfiguracji należy dostosować niektóre komendy komendy):
System operacyjny: Linux Debian 7 (bez środowiska graficznego) |
Hostname: server.mojadomena.com |
Adres ip: 192.168.1.20 |
1.Instalacja CUPS
Aby zainstalować serwer wydruku cups należy wydać następujące polecania:
sudo apt-get update
sudo apt-get intstall cups
Następnie za pomocą przeglądarki tekstowej lynx umożliwimy logowanie się do graficznej wersji panelu administracyjnego serwera cups z innych komputerów.
lynx 127.0.0.1:631
Wybieramy Administration a następnie zaznaczamy opcje Allow remote administation i potwierdzamy klikając change settings
Od tego momentu możemy zarządzać naszym serwerem CUPS za pomocą przeglądarki innego komputera znajdującego się w tej samej sieci LAN. Aby to zrobić wpisujemy w pasku adresu przeglądarki:
Intalacja OpenLDAP
2. Instalacja OpenLDAP
Aby zainstalować OpenLDAP wykonujemy następujące polecania:
sudo apt-get install slapd ldap-utils
Podczas instalacji zostaniemy poproszeni o podanie hasła administratora dla serwera LDAP.
Następnie należy potwierdzić poprzednio wpisane hasło:
Następnie należy wydać polecenie:
nano /etc/ldap/ldap.conf
Oraz zmodyfikować plik, aby wyglądał następująco:
Kolejnym etapem jest uruchomienie konfiguratora:
dpkg-reconfigure slapd
Kiedy pojawi się następujący komunikat wybieramy Nie:
Należy podać adres domeny DNS:
Podajemy hasło administratora LDAP:
Potwierdzamy hasło:
Wybieramy rodzaj bazy danych:
Należy wybrać czy chcemy przenieść starą bazę danych
Wybieramy czy chcemy, aby usunąć również baze danych w przypadku usunięcia slapd
Wybieramy nie, aby nie używać wersji 2 protokołu LDAP
Aby sprawdzić czy serwer działa prawidłowo wykonujemy polecenie:
ldapsearch -x
Powinno się nam wyświetlić coś podobnego do:
Należy zwrócić uwagę na linijkę result: 0 Success
Oznacza ona, że poprawnie wykonaliśmy poprzednie kroki.
3. Instalacja phpLDAPadmin
Administracja serwerem LDAP za pomocą komend jest dość trudna. W związku z tym, aby ułatwić zarządzanie użyto phpLDAPadmin. Jest to graficzne narzędzie obsługiwane za pomocą przeglądarki internetowaj, stworzone do obsługi serwera LDAP. Pozwala ono, na przeglądanie drzewa LDAP, schematów, wyszukiwanie danych oraz na tworzenie, kasowanie, kopiowanie i edytowanie wpisów.
Aby zainstalować phpLDAPadmin należy wkonać komende:
sudo apt-get install phpldapadmin
Kolejnym krokiem jest utworzenie dowiązania symbolicznego:
ln -s /usr/share/phpldapadmin/ /var/www/phpldapadmin
Następnie należy zedytować plik /etc/phpldapadmin/config.php:
nano /etc/phpldapadmin/config.php
Należy zedytować następujące wartości:
[…]
// Set your LDAP server name //
$servers->setValue(’server’,’name’,’Moj LDAP Server’);
[…]
// Set your LDAP server IP address //
$servers->setValue(’server’,’host’,’192.168.1.20′);
[…]
// Set Server domain name //
$servers->setValue(’server’,’base’,array(’dc=mojadomena,dc=com’));
[…]
// Set Server domain name //
$servers->setValue(’login’,’bind_id’,’cn=admin,dc=mojadomena,dc=com’);
Kolejnym krokiem jest restart serwera apache:
service apache2 restart
Panel do zarządzania serwerem LDAP powinien się pojawić po wpisaniu do przeglądarki adresu http://192.168.1.20/phpldapadmin Do zalogowania należy użyć danych wpisywanych przy instalacji serwera LDAP. Za pomocą panelu możemy stworzyć użytkowników, których później użyjemy do autoryzacji w serwerze CUPS.
4. Umożliwienie logowania do systemu użytkownikom LDAP.
Aby umożliwić logowanie użytkownikom LDAP do systemu musimy zainstalować i skonfigurować klienta LDAP. Wykonujemy polecenia:
apt-get install libnss-ldap libpam-ldap nscd
W czasie instalacji zostaniemy poproszeni o podanie adresu serwera LDAP:
Następnie podajmy wartości takie jak w pliku /etc/phpldaadmin/config.php
Wybieramy używaną przez nas wersję LDAP:
Podajemy dane konta administratora serwera LDAP:
Podajemy hasło administratora:
Kolejne okno informuje nas o konieczności ręcznej edycji pliku nsswitch.conf. Klikamy Ok.
Wybieramy czy konto administracyjne LDAP ma się zachowywać jak lokalny root:
Wybieramy nie:
Teraz musimy przekonfigurować libnss-ldap:
dpkg-reconfigure libnss-ldap
Sprawdzamy czy adres serwera jest poprawny:
Sprawdzamy kolejne dane:
Potwierdzamy używaną przez nas wersję LDAP:
Określamy czy baza daynch LDAPa wymaga logowania:
Wybieramy nie:
Wybieramy nie:
Klikamy Ok:
Mamy teraz zainstalowanego klienta LDAP. Kolejnym krokiem będzie jego konfiguracja.
Na początku edytujemy plik /etc/nsswitch.conf
nano /etc/nsswitch.conf
Plik powinien wyglądać w następujący sposób:
edytujemy plik /etc/pam.d/common-session:
nano /etc/pam.d/common-session
Dodajemy następującą linijkę na końcu, aby tworzyć foldery domowe użytkowników LDAP:
session required pam_mkhomedir.so
Restartujemy usługę nscd:
/etc/init.d/nscd restart
I od tego momentu możemy się logować do systemu za pomocą kont użytkowników z naszego serwera LDAP.
Ostatnim krokiem jest edycja pliku konfiguracyjnego CUPS:
nano /etc/cups/cupsd.conf
W tym pliku możemy ustalić na co pozwolić a na co nie zarówno grupą i użytkownikom LDAP jak i systemowym. Poniżej zamieszczam zawartość przykładowego pliku konfiguracyjnego:
LogLevel warn
MaxLogSize 0
# Allow remote access
Port 631
Listen /var/run/cups/cups.sock
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS dnssd
DefaultAuthType Basic
WebInterface Yes
<Location />
# Allow remote administration…
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin>
# Allow remote administration…
Require user @userzy-grupa
Order allow,deny
Allow @LOCAL
</Location>
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
# Allow remote access to the configuration files…
Order allow,deny
Allow @LOCAL
</Location>
<Policy default>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
<Policy authenticated>
JobPrivateAccess default
JobPrivateValues default
SubscriptionPrivateAccess default
SubscriptionPrivateValues default
<Limit Create-Job Print-Job Print-URI Validate-Job>
AuthType Default
Order deny,allow
</Limit>
<Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
<Limit Cancel-Job CUPS-Authenticate-Job>
AuthType Default
Require user @OWNER @SYSTEM
Order deny,allow
</Limit>
<Limit All>
Order deny,allow
</Limit>
</Policy>
Podsumowanie:
Tutorial opisuje sposób integracji serwera wydruku CUPS z serwerem LDAP.
Dzięki integracji możemy autoryzować zarówno użytkowników systemowych, jak i użytkowników LDAP.
Dzięki zastosowaniu użytkowników z LDAP możemy zintegrować nasz system z wieloma innymi usługami (na lokalnym komputerze jak i w sieci), co pozwala na ujednolicenie i centralizacje zarządzania kontami użytkowników.