Bug 22813 - can't print to samba shared printers
Summary: can't print to samba shared printers
Status: CLOSED FIXED
Alias: None
Product: Branch 5.1
Classification: Distributions
Component: libcups (show other bugs)
Version: unspecified
Hardware: all Linux
: P3 normal
Assignee: inger@altlinux.org
QA Contact: QA 5.1
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-01-23 20:04 MSK by viy
Modified: 2010-02-18 23:43 MSK (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description viy 2010-01-23 20:04:45 MSK
После обновления до 5.1 сломалась печать через cups.

[2010/01/23 18:26:37, 0] printing/print_cups.c:cups_connect(69)
  Unable to connect to CUPS server /var/run/cups/cups.sock:631 - Permission denied
Странный URL /var/run/cups/cups.sock:631 в логах
напоминает такой из
http://bugs.kde.org/show_bug.cgi?id=115891

rpm -q samba cups
samba-3.0.37-alt1
cups-1.4.2-alt1.M51.1
uname -a
Linux breeze.localdomain 2.6.30-std-def-alt15 #1 SMP Mon Dec 14 08:46:35 UTC 2009 x86_64 GNU/Linux
Comment 1 viy 2010-01-23 20:10:17 MSK
Станислав, не встречались с такой бякой
 Unable to connect to CUPS server /var/run/cups/cups.sock:631 - Permission
denied
?
Comment 2 viy 2010-01-23 20:29:23 MSK
в cups.conf
Listen localhost:631
Listen /var/run/cups/cups.sock

Если последнюю строчку закоментировать, то печатать будет (hackaround есть)
но это есть в cups.conf.default
Listen localhost:631
Listen /var/run/cups/cups.sock
и по идее в свежеустановленной системе.

Т.е. похоже, сборка samba некорректно работает с libcups.so
может, ее просто пересобрать? или это samba слишком старая для cups 1.4.2 ?
Comment 3 Alexander Bokovoy 2010-01-23 23:16:37 MSK
Пересборка не особенно поможет, права доступа к сокету все же хотелось бы увидеть, скорее всего изменились они.

Реальная попытка соединения выполняется в CUPS, в httpAddrConnect -- смотрите http://svn.easysw.com/public/cups/trunk/cups/http-addrlist.c 

httpAddrConnect() перебирает все возможные адреса для соединения, которые прождаются посредством httpAddrGetList() оттуда же (вызывается из httpConnectEncrypt() c AF_UNSPEC).
Comment 4 viy 2010-01-24 00:29:06 MSK
(В ответ на комментарий №3)
> Пересборка не особенно поможет, права доступа к сокету все же хотелось бы
> увидеть, скорее всего изменились они.

права к сокету здесь не при чем (root:lp 660), 
/var/run/cups/cups.sock:631 -- это попытка связаться с хостом /var/run/cups/cups.sock портом 631 -- т.е. путь воспринят как hostname.

> Реальная попытка соединения выполняется в CUPS, в httpAddrConnect -- смотрите
> http://svn.easysw.com/public/cups/trunk/cups/http-addrlist.c 
> httpAddrConnect() перебирает все возможные адреса для соединения, которые
> прождаются посредством httpAddrGetList() оттуда же (вызывается из
> httpConnectEncrypt() c AF_UNSPEC).

Т.е. это похоже на ошибку внутри libcups.
Что Станислав (inger@) скажет?
Comment 5 Alexander Bokovoy 2010-01-24 01:10:35 MSK
Странный урл никакого отношения к проблеме не имеет, его безусловно печатает Самба, потому что она его передает в libcups, как того требует API CUPS, а  libcups правильно разбирается в httpAddrGetList() в том, что для URL, начинающихся с /, не нужен порт.

Сбой (невозможность открытия сокета) в libcups происходит скорее всего от того, что процесс smbd, который выполняет печать, работает под пользователем, который не имеет доступа к сокету, то есть, он не root и не в ходит в группу lp.
Comment 6 Alexander Bokovoy 2010-01-24 01:13:36 MSK
Можно настроить отладку уровня 10 в самбе и прислать мне отладочную информацию? Если дело в правах, то это сразу будет видно.
Comment 7 inger@altlinux.org 2010-01-24 13:21:31 MSK
Скорее всего это проблема в libcups из-за нашего "izvrat" патча. В версии 1.3.1 я лечил это. В 1.4.1 тоже пытался, но видимо не получилось.

Сейчас я совершенно не успеваю заниматься пакетом cups. Чтобы убедиться что проблема именно в нашей дополнительной паранойи можно попробовать пересобрать cups без этого патча.

(В ответ на комментарий №5)
> Странный урл никакого отношения к проблеме не имеет, его безусловно печатает
> Самба, потому что она его передает в libcups, как того требует API CUPS, а 
> libcups правильно разбирается в httpAddrGetList() в том, что для URL,
> начинающихся с /, не нужен порт.
> 
> Сбой (невозможность открытия сокета) в libcups происходит скорее всего от того,
> что процесс smbd, который выполняет печать, работает под пользователем, который
> не имеет доступа к сокету, то есть, он не root и не в ходит в группу lp.
Comment 8 viy 2010-01-24 23:37:54 MSK
(В ответ на комментарий №7)
> Скорее всего это проблема в libcups из-за нашего "izvrat" патча. В версии 1.3.1
> я лечил это. В 1.4.1 тоже пытался, но видимо не получилось.
> 
> Сейчас я совершенно не успеваю заниматься пакетом cups. Чтобы убедиться что
> проблема именно в нашей дополнительной паранойи можно попробовать пересобрать
> cups без этого патча.

Станислав, спасибо вам за диагностику!
Да, действительно, пересборка cups без hardened patch помогла.
восстановил 
$ grep Listen /etc/cups/cupsd.conf                
Listen localhost:631
Listen /var/run/cups/cups.sock
передернул cupsd и smb,
печать прошла успешно.

похоже, надо перевестить баг на libcups.
Comment 9 viy 2010-01-24 23:39:08 MSK
соответственно просьба пересобрать в 5.1 без hardened
Comment 10 viy 2010-01-24 23:39:55 MSK
если что, можете выдать acl, я могу пересобрать.
Comment 11 Michael Shigorin 2010-02-05 00:56:07 MSK
Выдал ACL на cups в 5.1.
Comment 12 viy 2010-02-05 19:05:38 MSK
(В ответ на комментарий №11)
> Выдал ACL на cups в 5.1.

Станислав, что вы посоветуете? Выкладывать в 5.1 без
hardened патча? или на этот патч у нас что-то завязано?
Comment 13 Michael Shigorin 2010-02-18 19:20:16 MSK
Выкладывай -- на него было завязано понижение привилегий ещё со времён работы над Castle.
Comment 14 viy 2010-02-18 23:43:42 MSK
(В ответ на комментарий №13)
> Выкладывай -- на него было завязано понижение привилегий ещё со времён работы
> над Castle.

done
new task #20376: owner=viy repo=5.1