next up previous contents index
Next: Доступ к принтеру Windows Up: Samba Previous: Доступ к SMB-ресурсам из   Contents   Index

Доступ к принтеру Linux для Windows-машин

Для организации доступа к Linux-принтеру из Windows-машин, вам необходимо убедиться, что принтер работает и под Linux. Если вы можете печатать из под Linux, то организация доступа к принтеру будет очень простой.

Заметьте, что для печати пользователи Windows должны быть зарегистрированы на сервере Linux/Samba. Windows 95/98 будет пытаться аутентифицироваться на сервере печати с теми именем и паролем, которые использовались при ``входе'' на машину Windows Это значит, что если Вы нажали на Cancel (Отмена) при ``входе'' в Windows, то не сможете ни печатать, ни подключаться к SMB сервисам. Windows NT позволяет более эффективно задавать имя и пароль при подключении к принтеру.

Смотрите соответствующие разделы помощи для изучения настроек печати.

Добавьте настройку принтера в файл smb.conf:

[global] printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log.%m lock directory = /var/lock/samba [printers] comment = All Printers security = server path = /var/spool/lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 [ljet] security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s

Убедитесь, что путь к принтеру (в этом случае для [ljet]) соответствует буферному директорию, указанному в файле /etc/printcap.

Строки:

printcap name = /etc/printcap load printers = yes

контролируют, должны ли все принтеры, перечисленные в /etc/printcap по умолчанию быть загружены. Если Вы введете указанные строки, то нет необходимости в настройке каждого принтера по отдельности. Раздел [printers] содержит настройки для принтеров, которые Вы хотите определить явно. Если используемая подсистема печати не работает подобным образом (BSD), то необходимо настроить ``фальшивый'' файл printcap (или используйте print command, смотрите ниже). Дополнительная информация о системе printcap содержится в фалах помощи.

Полезным приемом при проверке сетевых соединений является модификация команды печати:

print command = cp %S /tmp/print.%P.%S \emd{verbatim} Итоговый файл может быть проанализирован. Существуют некоторые проблемы с доступом к принтерам UNIX-машин из машин Windows NT с использованием Samba. Одна из проблем состоит в том, что NT может неправильно видеть сетевой принтер. Для решения этой проблемы, смотрите замечание в файле \verb|docs/WinNT.txt| дистрибутива Samba. Другая проблема связана с паролями. Смотрите комментарий в том же самом файле. Более удобная для использования команда печати, чем в вышеприведенном примере: \begin{verbatim} print command = smb2ps %s | lpr -r -h -P %p

где smb2ps является скриптом, который преобразует буферный файл, переданный из Windows, в обычно используемый файл Postscript. Он также должен удалять первые три и последние две строки, потому что эти строки содержат некоторые коды PJL или PCL (если печатается PCL, а не настоящий Postscript). Windows 95/98/NT не имеют общего драйвера Postscript, но драйвер принтера Digital turbo Printserver 20 может работать как хороший драйвер Postscript в большинстве случаев. Аналогично может работать и драйвер Apple LaserWriter II NTX.

Если Вы создали буферный каталог для печати, то будьте внимательны с правами доступа. Можно права доступа к буферному каталогу (в нашем случае это, /var/spool/lpd/lpr) сделать равными 4755 (заметьте, что установлен SUID-бит). Это решение пригодно для локальных системных администраторов; если безопасность печати является предметом споров, то можно остановиться на других решениях.

Поблемы с правами доступа на запись в директорий /var/spool/lpd/ могут быть избегнуты при использованиии чего-то подобного path=/tmp и print command = lpr -r -P%p %s.

Иногда возникает ошибка разбора Postscript при печати из машины под Windows, которая вызывает печать лишних страниц в конце каждого задания. Последняя страница всегда будет содержать сообщение %%[ Lastpage ]%% в заголовке. Один из способов обработки этой ошибки - использование скрипта для удаления куска плохого Postscript из задания печати. Другим вариантом является нахождение лучшего драйвера Postscript для Windows. Вероятно, лучший способ состоит в использовании LPRng вместо Postscript для печати на сервер Samba. На сервере Samba, запись в /etc/printcap запись будет выглядеть примерно так:

raw:\ :rw:sh: :lp=/dev/lp1 :sd=/var/spool/lpd/raw :fx=flp

LPRng не требует :\ в конце каждой строки. Запись о принтере все равно необходимо сделать в файле /etc/smb.conf - для физического принтера. Строка команды печати нужна для использования записи raw из файла /etc/printcap, данные должны посылаться в двоичной форме. Попробуйте ввести командную строку:

print command = lpr -b -Praw %s

Вам также может понадобиться установить буферизацию печати в Windows - для вывода прямо на принтер, вместо использования буфера на сервере.

Если при печати постоянно выводятся лишние страницы в конце заданий Windows-клиентов, то попробуйте добавить директиву sf в файл /etc/printcap, что запретит прогон страниц, разделяющих задание, но не будет влиять на прогон страниц внутри документов.



Alex Otwagin 2002-12-16