Integracja serwera wydruku CUPS z LDAP

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:

http://192.168.1.20:631

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.

1

Następnie należy potwierdzić poprzednio wpisane hasło:

2

Następnie należy wydać polecenie:

nano /etc/ldap/ldap.conf
Oraz zmodyfikować plik, aby wyglądał następująco:

3

Kolejnym etapem jest uruchomienie konfiguratora:

dpkg-reconfigure slapd
Kiedy pojawi się następujący komunikat wybieramy Nie:

4

Należy podać adres domeny DNS:

5

Podajemy hasło administratora LDAP:

6

Potwierdzamy hasło:

7

Wybieramy rodzaj bazy danych:

8

Należy wybrać czy chcemy przenieść starą bazę danych

9

Wybieramy czy chcemy, aby usunąć również baze danych w przypadku usunięcia slapd

10

Wybieramy nie, aby nie używać wersji 2 protokołu LDAP

11

Aby sprawdzić czy serwer działa prawidłowo wykonujemy polecenie:

ldapsearch -x

Powinno się nam wyświetlić coś podobnego do:

12

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:

13

Następnie podajmy wartości takie jak w pliku /etc/phpldaadmin/config.php

14

Wybieramy używaną przez nas wersję LDAP:

15

Podajemy dane konta administratora serwera LDAP:

16

Podajemy hasło administratora:

17

Kolejne okno informuje nas o konieczności ręcznej edycji pliku nsswitch.conf. Klikamy Ok.

18

Wybieramy czy konto administracyjne LDAP ma się zachowywać jak lokalny root:

19

Wybieramy nie:

20

Teraz musimy przekonfigurować libnss-ldap:

dpkg-reconfigure libnss-ldap

Sprawdzamy czy adres serwera jest poprawny:

21

Sprawdzamy kolejne dane:

22

Potwierdzamy używaną przez nas wersję LDAP:

23

Określamy czy baza daynch LDAPa wymaga logowania:

24

Wybieramy nie:

25

Wybieramy nie:

26

Klikamy Ok:

27

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:
28

 

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.