Вперед Назад Содержание

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

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

Смотрите Printing HOWTO для дополнительной информации о настройке печати.

Поскольку автор использует принтер, подключенный к машине с Windows NT(это было давно - до перевода почти всей сети полностью на Linux), этот раздел не должен рассматриваться как законченный, а только как рекомендация. У кого есть информация об организации такого доступа, посылайте ее мне на адрес: dwood@plugged.net.au, так что этот раздел может быть дополнен в будущем.

Добавьте настройку принтера в ваш файл 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 смотрите Printing-HOWTO.

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


   print command = cp %S /tmp/print.%P.%S

Итоговый файл может быть проанализирован.

ЗАМЕЧАНИЕ: Существуют некоторые проблемы с доступом к принтерам на UNIX-машинах для машин с Windows NT используя Samba. Одна из проблем в том, что NT неправильно видит сетевой принтер. Для решения этой проблемы, смотрите замечание в файле docs/WinNT.txt дистрибутива Samba. Другая проблема связана с проблемой пароля. Смотрите комментарий в том же самом файле.

Oleg L. Machulskiy ( machulsk@shade.msu.ru) предложил более удобную для использования команду печати, чем в вышеприведенном примере:


print command = smb2ps %s | lpr -r -h -P %p

где 'smb2ps' является скриптом, который преобразует буферный файл, переданный из под Windows в обычно используемый файл Postscript. Он должен удалять первые три и последние две строки, потому что эти строки содержат некоторые коды PJL или PCL.

Такой подход нужен только если ваша машина с Windows печатает PCL, а не настоящий Postscript. Я обнаружил, что Windows 95/98/NT не имеют общего драйвера Postscript, но драйвер принтера "Digital turbo Printserver 20" может работать как хороший драйвер Postscript для большинства случаев. Я также слышал, что для этих же целей может работать драйвер "Apple LaserWriter II NTX".

Jeff Stern ( jstern@eclectic.ss.uci.edu) написал следующее, что может помочь некоторым из вас:

--------------------------%<----------------------------------

У меня была проблема, которая заключалась в том, что я мог печатать, используя lpd/lpr на мой принтер, подключенный к Linux, с самой машины под Linux. Но я не мог печатать на этот принтер с удаленной машины под Win95. Когда я попробовал запустить

smbclient \\eclectic\belen -P

и затем попытался выполнить

print myfile

я получил сообщение о том, что доступ запрещен. Я установил права доступа на директорию /var/spool/lpd/lp1 равными 777. Я конечно извиняюсь, но я это сделал. Я также предполагаю, в качестве альтернативы, что я мог бы поместить всех, кто зарегестрирован на машине с Linux в группу 'lp', или задать владельцем директории группу 'users', и т.п... Но сейчас это работает (с владельцем root:lp).

В конце, другая вещь которую должен знать администратор это имя пользователя на машине с Windows (который пытается использовать принтер Linux через Samba), которое должно быть также названо и на машине с Linux. Таким образом, если пользователь 'joe' на машине с Windows, названной 'mywinbox' попытается напечатать на принтер 'belen' на машине с Linux 'eclectic' (\\eclectic\belen) то также должен быть пользователь 'joe' на машине с Linux. Затем, пароль 'joe' должен быть паролем для доступа к принтеру 'belen' на машине 'eclectic'. Это пароль будет запрошен при установке принтера на машине с Windows, используя мастер добавления принтера.

Я думаю, что это не должно быть случайным, поскольку я установил мой принтер как 'public' в smb.conf. Но несомненно он все равно спршивает пароль. (Машины под Windows к сожалению не дают вам возможность указать другое имя для удаленного принтера (под Linux). Windows просто использует имя локального пользователя, которые вы ввели, когда запустили Win95.

--------------------------%<----------------------------------

Dr. Michael Langner ( langner@fiz-chemie.de указал, что проблема прав доступа на запись на дерево директорий /var/spool/lpd/ может быть избегнута, использованием чего-то подобного "path=/tmp" и "print command = lpr -r -P%p %s".

Иногда возникает ошибка разбора Postscript при печати Postscript с машины под Windows, что вызывает печать лишних страниц в конце каждого задания. Последняя страница всегда будет содержать сообщение "%%[ Lastpage ]%%" в заголовке. Это кажется случается только на машинах с Windows 95 и 98 и это происходит из-за того, что Postscript является плохосформированным.

Одним из способов обработки этой ошибки --- использовать скрипт для удаления куска плохого Postscript из задания печати. Другим способом является нахождение лучшего драйвера Postscript для Windows. Вероятно лучший способ для нас это использовать LPRng вместо Postscript для печати на сервер Samba.

Erik Ratcliffe ( erik@caldera.com), Caldera, сообщил, что использование LPRng означает, что любой драйвер принтера может быть использован с машин под Windows. На сервере 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

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


Вперед Назад Содержание