Назад | Перейти на главную страницу

Проблемы аутентификации CUPS Negotiate

Я изо всех сил пытался керберизовать определенные службы в нашем домене, одна из которых - CUPS. Настройка выглядит следующим образом: центральный сервер печати подключается к каждому отдельному принтеру в домене и совместно использует их, а каждый клиент подключается к определенным принтерам на этом сервере. Следовательно, и на сервере, и на всех клиентах используется диспетчер очереди CUPS. Аутентификация необходима на сервере печати по очевидным причинам - использование обычной аутентификации работает (с диалоговым окном имени пользователя и пароля, появляющимся на клиенте, пытающемся распечатать), но аутентификация с согласованием - нет.

Сервер печати имеет служебную ключевую вкладку с именем службы «хост», а клиенты и сервер имеют правильные записи DNS и обратного DNS для сервера печати и KDC. Получение билета для принципала работает на клиентов. Но когда я пытаюсь напечатать, появляется диалоговое окно с текстом «согласовать» с текстовым полем рядом с ним. Независимо от того, что набрано в диалоговом окне, оно продолжает отображаться.

Интересно, что использование client.conf для направления клиента непосредственно на диспетчер очереди печати сервера работает с аутентификацией Negotiate - получение билета службы работает, а аутентификация происходит без сучка и задоринки. Но это не идеально, потому что каждый клиент видит каждый принтер - разные комнаты хотят видеть принтеры для своих комнат.

Как должна работать аутентификация Negotiate? На данный момент я совершенно не знаю, куда идти. Сервер работает под управлением Ubuntu 12.04 LTS (полностью обновлен), а клиенты также используют Ubuntu 12.04 LTS (не полностью обновлен). И клиенты, и сервер используют CUPS 1.5.3. KDC - это сервер Samba4, на котором и сервер печати, и клиенты правильно настроены для Kerberos. Конфигурация клиента - это просто версия Ubuntu по умолчанию. Текущий сервер cupsd.conf выглядит следующим образом:

LogLevel warn
MaxLogSize 0
SystemGroup lpadmin
# Allow remote access
Port 631
HostNameLookups on
Listen /var/run/cups/cups.sock
Browsing On
BrowseOrder allow,deny
BrowseAllow all
BrowseLocalProtocols CUPS dnssd
BrowseAddress @LOCAL
DefaultAuthType Negotiate
DefaultPolicy authenticated
WebInterface Yes

<Location />
  # Allow remote access...
  Order allow,deny
  Allow all
</Location>
<Location /admin>
</Location>
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
</Location>

<Policy default>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
  AuthType Default
  Require valid-user
    Order allow,deny
Allow from 172.30.*.*
  </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>