The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа
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

  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor