Для организации доступа к 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
, что запретит прогон страниц, разделяющих
задание, но не будет влиять на прогон страниц внутри документов.