SMB HOWTO
David Wood, dwood@plugged.net.au, перевод Alex Ott
ott@phtd.tpu.edu.ru
v1.1, 25 марта 1999
Это SMB HOWTO. Этот документ описывает использование в Linux протокола
Server Message Block (SMB), который иногда также называется протоколом
Session Message Block (SMB), протоколом NetBIOS или протоколом LanMan╜
ager.
______________________________________________________________________
Table of Contents
1. Введение
2. Дополнительная информация
3. Установка
4. Запуск демонов
5. Основная настройка (/etc/smb.conf)
6. Организация доступа к дискам Linux для машин под Windows
7. Доступ к дискам Windows из Linux
8. Доступ к принтеру Linux для Windows-машин
9. Доступ к принтеру Windows с машин работающих под Linux
10. Backing Up Windows Machines to a Linux Host
11. Авторские права
12. Благодарности
______________________________________________________________________
ППррииммееччааннииее ппееррееввооддччииккаа:: Шлите мне любые комментарии и замечания, даже
небольшие.
11.. ВВввееддееннииее
Это SMB HOWTO. Этот документ описывает использование в Linux протокола
Server Message Block (SMB), который иногда также называется протоколом
Session Message Block (SMB), протоколом NetBIOS или протоколом
LanManager. Хотя этот документ и предназначен для Linux, но Samba
может работать на большинстве Unix-подобных операционных систем.
Этот документ сопровождается David Wood (dwood@plugged.net.au).
Добавления, изменения или исправления могут быть посланы ему для
включения в следующий выпуск.
Большое количество документации по Samba доступно на WWW-сервере
Samba, который находится по адресу http://www.samba.org/
. Вы также можете использовать группу новостей
comp.protocols.smb.
Протокол SMB используется Microsoft Windows 3.11, NT и 95/98 для
организации доступа к дискам и принтерам. Используя набор утилит Samba
от Andrew Tridgell (Andrew.Tridgell@anu.edu.au), UNIX-машины (включая
Linux) могут организовывать доступ к дискам и принтерам для
Windows-машин. Утилиты smbfs написанные Paal-Kr. Engstad
(pke@engstad.ingok.hitos.no) и Volker Lendecke
(lendecke@namu01.gwdg.de) дают возможность машинам с Unix монтировать
SMB-ресурсы доступные на машинах с Windows или Samba.
Четыре вещи, которые можно делать с помощью Samba:
1. давать доступ к дискам Linux Windows-машинам.
2. получать доступ к дискам Windows для машин под Linux.
3. давать доступ к принтерам Linux для Windows-машин.
4. получать доступ к принтерам Windows из Linux-систем.
Обо всем этом рассказывается в этом документе.
Отказ от ответственности: Процедуры и программы либо работают для
автора, либо было сообщено, что они работают для людей, которые
разработали их. Различные конфигурации могут не работать с информацией
данной здесь. Если вы столкнулись с такой ситуацией, вы можете послать
сообщение автору документа с пожеланиями для его улучшения, но автор
ничего не гарантирует. Что вы ожидали? Автор, кроме всего прочего,
консультант...
Заметим, что для доступа к SMB-ресурсам с машин с Windows 3.x, на них
должен быть установлен стэк TCP/IP и библиотеки Win32s. Оба этих
компонента доступны с сервера фирмы Microsoft
(http://www.microsoft.com ).
22.. ДДооппооллннииттееллььннааяя ииннффооррммаацциияя
Этот документ делает попытку объяснить как настроить основные файловые
и принтерные SMB-сервисы на Linux-машине. Samba является очень
сложным и законченным пакетом. Незачем пытаться дублировать здесь всю
документацию на Samba.
Для дополнительной информации смотрите следующие документы:
╥ Документация на Samba, доступная как часть дистрибутива Samba.
Дистрибутив доступен по адресу: ftp://ftp.samba.org/
╥ The Linux Printing HOWTO.
╥ The Print2Win Mini-HOWTO.
╥ Стандарт протокола для сервиса NetBIOS при использовании транспорта
TCP/UDP.
RRFFCC 11000011
Концепции и методы.
RRFFCC 11000022
Подробные спецификации
33.. УУссттааннооввккаа
Сначала, для того чтобы использовать Samba ваша машина должна
находится в одиночном ethernet-сегменте локальной сети, используя
протокол TCP/IP. Samba не будет работать используя другие сетевые
протоколы. Это в общем легко, поскольку Linux и Windows 95/98/NT
поставляются с поддержкой TCP/IP. Однако если вы используете машины с
Windows 3.X, то вам необходимо добавит поддержку TCP/IP.
Сервисы SMB не могут быть использованы за пределами маршрутизаторов.
Если вы хотите сделать что-то подобное, то вам необходимо настроить
туннель IP, что не является предметом рассмотрения этого документа.
Для того, чтобы получить исходные тексты последней версии Samba,
свяжите с указанным URL и выберите ближайший к вам сервер-зеркало:
ftp://ftp.samba.org/ .
Однако, если у вас установлен дистрибутив RedHat Linux, у вас имеется
возможность установить ее как пакет RedHat. Некоторые другие
дистрибутивы также включают исполняемые файлы Samba.
Следующие два демона необходимы для работы пакета Samba. Они обычно
устанавливаются в /usr/sbin и запускаются либо при загрузке из
системных скриптов, либо из inetd. Примеры скриптов даны в разделе
``Запуск демонов''.
______________________________________________________________________
smbd (Демон SMB)
nmbd (Обеспечивает поддержку сервера имен NetBIOS для клиентов)
______________________________________________________________________
Заметим, что сервис имен, предоставляемый демоном nmbd является
отличным от сервиса имен, предоставляемого Domain Name Service (DNS).
Сервис имен NetBIOS является сервисом имен в стиле Windows,
используемым для SMB. Другими словами, имеющийся сервис имен DNS
ничего не скажет о возможности Samba для нахождения имен машин.
Обычно следующие двоичные файлы Samba устанавливаются в директорию
/usr/bin, хотя их расположение опционально.
______________________________________________________________________
smbclient (Клиент SMB для UNIX-машин)
smbprint (скрипт для печати на принтер на SMB-машине)
smbprint.sysv (такое как выше, но для машин с SVR4 UNIX)
smbstatus (Перечисляет текущие SMB-соединения для локальной машины)
smbrun ('glue' скрипт для запуска приложений на SMB-машине)
______________________________________________________________________
Двоичные файлы относящиеся к поддержке файловой системы smbfs
обсуждаются далее в этом документе.
Дополнительно с этим документом включен скрипт, названный 'print',
который служит как полезная надстройка над скриптом smbprint.
Пакет Samba очень прост в установке. Просто получите исходные тексты
по адресу, указанному выше, и прочитайте файл README в дистрибутиве.
Также в дистрибутиве есть файл называемый docs/INSTALL.txt, который
дает простой набор пошаговых инструкций.
Последующая установка, поместит демоны в /usr/sbin и двоичные файлы в
/usr/bin. Установите справочные страницы в /usr/local/man.
При установке пакета Samba, вы должны указать в Makefile расположение
файла конфигурации, smb.conf. Обычно это /etc, но вы можете поместить
его куда угодно. Для этих указаний, мы будем предполагать, что вы
указали расположение файла конфигурации как /etc/smb.conf,
расположение файла протокола как log file = /var/log/samba-log.%m и
блокировочной директории как lock directory = /var/lock/samba.
Установите файл конфигурации smb.conf. Перейдите в директорию, где
была скомпилирована Samba. Посмотрите в поддиректории examples/simple
и прочитайте файл README. Скопируйте файл smb.conf найденный в этой
директории в директорию /etc. ББУУДДЬЬТТЕЕ ООССТТООРРООЖЖННЫЫ!! Если у вас
дистрибутив Linux с уже установленной Samba, у вас уже может быть файл
конфигурации Samba в /etc. Вероятно вы можете начать работать с
каким-то из них.
Если вы не хотите устанавливать файл конфигурации в директорию /etc,
то поместите его куда вы хотите, а затем поместите символическую
ссылку на него в директорию /etc:
______________________________________________________________________
ln -s /path/to/smb.conf /etc/smb.conf
______________________________________________________________________
44.. ЗЗааппуусскк ддееммоонноовв
Есть два демона SMB /usr/sbin/smbd и /usr/sbin/nmbd.
Вы можете запустить демоны Samba из inetd или как автономные процессы.
Samba будет отвечать чуть быстрее когда она запущена как автономный
процесс, чем в случае когда она запускается из inetd.
В некоторых случаях вы должны проверить наличие в файле /etc/services
примерно таких строк:
______________________________________________________________________
netbios-ns 137/tcp nbns
netbios-ns 137/udp nbns
netbios-dgm 138/tcp nbdgm
netbios-dgm 138/udp nbdgm
netbios-ssn 139/tcp nbssn
______________________________________________________________________
Убедитесь, что все они не закоментированы. В зависимости от вашего
дистрибутива, вам может даже нужно будет добавить их в этот файл.
Samba не сможет привязаться к соответствующим портам пока этих строк
не будет в файле /etc/services.
Для запуска демонов из inetd, поместите следующие строки в
конфигурационный файл inetd, /etc/inetd.conf:
______________________________________________________________________
# SAMBA NetBIOS services (for PC file and print sharing)
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
______________________________________________________________________
Затем перезапустите демон inetd выполнив команду:
______________________________________________________________________
kill -HUP 1 `cat /var/run/inetd.pid`
______________________________________________________________________
Для запуска демонов из системных стартовых скриптов, поместите
следующий скрипт в файл /etc/rc.d/init.d/smb (для дистрибутива RedHat)
и создайте на него символические ссылки с именами указанными в
комментариях:
______________________________________________________________________
#!/bin/sh
#
# /etc/rc.d/init.d/smb - запускает и останавливает сервисы SMB
#
# Следующие файлы должны быть символическими ссылками на этот файл:
# symlinks:
# /etc/rc.d/rc1.d/K35smb (Убивает сервисы SMB при выключении
# /etc/rc.d/rc3.d/S91smb (Запускает сервисы SMB в многопользовательском режиме)
# /etc/rc.d/rc6.d/K35smb (Убивает сервисы SMB при перезагрузке)
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# See how we were called.
case "$1" in
start)
echo -n "Starting SMB services: "
daemon smbd -D
daemon nmbd -D
echo
touch /var/lock/subsys/smb
;;
stop)
echo -n "Shutting down SMB services: "
killproc smbd
killproc nmbd
rm -f /var/lock/subsys/smb
echo ""
;;
*)
echo "Usage: smb {start|stop}"
exit 1
esac
______________________________________________________________________
Если при старте Samba вы получаете сообщение в котором говорится, что
демон не может подключится к порту 139, то вероятно у вас уже есть
запущенные процессы Samba, которые не были завершены. Посмотрите
список процессов (используя команду 'ps auxww | grep mbd') для того,
чтобы определить есть ли еще запущенные сервисы Samba.
55.. ООссннооввннааяя ннаассттррооййккаа ((//eettcc//ssmmbb..ccoonnff))
Настройка Samba в Linux (или других UNIX-машинах) контролируется
единственным файлом, /etc/smb.conf. Этот файл определяет к каким
системным ресурсам вы хотите дать доступ для внешнего мира и какие
ограничения вы хотите дать на использование этих ресурсов.
Так как следующие разделы посвящены организации доступа к дискам и
принтерам Linux для Windows-машин, то файл smb.conf, показанный в этом
разделе является примером, исключительно в целях введения.
Не беспокойтесь сейчас о деталях. Следующие разделы введут основные
концепции.
Каждый раздел файла начинается с заголовка раздела, такого как
[global], [homes], [printers], и т.п..
Секция [global] определяет некоторые переменные, которые Samba будет
использовать для определения доступа ко всем ресурсам.
Раздел [homes] позволяет удаленным пользователям иметь доступ к своим
(и только своим) домашним директориям на локальной Linux-машине. Так
что, если пользователи Windows попытаются подключиться к этому разделу
со своих Windows-машин, то они будут подключены к своим персональным
домашним директориям. Заметим, что для того чтобы сделать это, они
должны быть зарегистрированы на Linux-машине.
Простой файл smb.conf, приведенный ниже, позволяет удаленным
пользователям иметь доступ к их домашним директориям на локальной
машине и писать во временную директорию. Для того, чтобы пользователи
Windows могли увидеть эти ресурсы машина с Linux должна быть в
локальной сети. Затем пользователи просто подключают сетевые диски с
помощью Windows File Manager или Windows Explorer.
Заметим, что в следующих разделах будут даны дополнительные записи для
этого файла, чтобы дать доступ к большему количеству ресурсов.
______________________________________________________________________
; /etc/smb.conf
;
; Убедитесь и перезапустите сервер после внесения изменений в этот
; файл, например:
; /etc/rc.d/init.d/smb stop
; /etc/rc.d/init.d/smb start
[global]
; Раскомментируйте эту строку, если вы хотите дать доступ пользователю "гость"
; guest account = nobody
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba
share modes = yes
[homes]
comment = Home Directories
browseable = no
read only = no
create mode = 0750
[tmp]
comment = Temporary file space
path = /tmp
read only = no
public = yes
______________________________________________________________________
Написав новый файл smb.conf, полезно проверить его правильность. Вы
можете проверить правильность написания файла smb.conf, используя
утилиту отсутствии проблем, то smbd правильно загрузит файл настроек.
Полезный трюк: Если ваш сервер Samba имеет больше одного ethernet
интерфейса, то smbd может подключится к неправильному. Если это так,
что вы можете явно заставит ее подключаться к нужному добавив строку в
раздел [global] файла /etc/smb.conf:
______________________________________________________________________
interfaces = 192.168.1.1/24
______________________________________________________________________
Также существует GUI-утилита для настройки Samba: GtkSamba. Смотрите
страницу по адресу http://www.open-systems.com/gtksamba.html
.
66.. ООррггааннииззаацциияя ддооссттууппаа кк ддииссккаамм LLiinnuuxx ддлляя ммаашшиинн ппоодд WWiinnddoowwss
Как показано выше в файле smb.conf, организация доступа к дискам Linux
для пользователей Windows является довольно простым делом. Однако, с
помощью Samba вы можете контролировать это в большой степени. Здесь мы
приведем несколько примеров:
Чтобы организовать доступ для всех, создайте копию раздела [tmp],
приведенного выше, добавив что-то подобное в smb.conf:
______________________________________________________________________
[public]
comment = Public Stuff
path = /home/public
public = yes
writable = yes
printable = no
______________________________________________________________________
Вы сейчас будете иметь возможность запустить Samba и просмотреть
доступные ресурсы с Windows PC. Однако, недавно Microsoft сделала
жизнь немного более трудной для тех, кто использует Samba. Windows 98,
Windows NT (service pack 3 или выше) и поздние версии Windows 95
теперь по умолчанию используют шифрованные пароли. А Samba по
умолчанию использует нешифрованные пароли. Вы не сможете просматривать
содержимое серверов когда либо клиент либо сервер используют
шифрованные пароли, потому что соединение не может быть сделано без
регистрации.
Если у вас есть несоответствие типов паролей между клиентом и сервером
и когда вы пытаетесь подключится к ресурсу, то вы можете увидеть окно
диалога в котором будет сказано примерно следующее: "You are not
authorized to access that account from this machine".
Вы можете либо настроить Samba-сервер для использования шифрованных
паролей, либо настроить машины с Windows, чтобы они использовали
нешифрованные пароли.
Для того, чтобы заставить Windows работать с нешифрованными паролями
SMB:
Windows 95/98 =============
Используя редактор registry (regedit), создайте ключ registry
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP
Добавьте значение типа DWORD: Имя значения: EnablePlainTextPassword
Данные: 0x01.
Windows NT ==========
Используя редактор registry (regedit), создайте ключ registry
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rdr\Parameters
Добавьте значение типа DWORD: Имя значения: EnablePlainTextPassword
Значение: 0x01
После того, как вы сделали эти изменения, перезагрузите машину с
Windows и попытайтесь подключить сетевой диск к серверу Samba. Это
должно работать, поскольку сервер Samba использует пароли в
нешифрованном виде.
Для того, чтобы настроить Samba для использования шифрованных паролей:
В раздел [global] файла /etc/smb.conf, добавьте следующие строки:
______________________________________________________________________
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
______________________________________________________________________
Мы вам настоятельно рекомендуем прочитать файлы ENCRYPTION.txt,
Win95.txt и WinNT.txt в документации по Samba до того как вы будете
делать это!
Если ваши и клиенты и сервер используют шифрованные пароли, то вы не
сможете просмотреть списки доступных ресурсов до тех пор пока
начальное соединение не будет сделано с правильными параметрами входа.
Для того чтобы сделать первоначальное соединение, введите вручную имя
ресурса в диалоговом окне Windows File Manager или Explorer, имя
должно быть в форме правильными для данного сервера именем и паролем.
Если вы подозреваете, что ваш сервис имен NetBIOS неправильно настроен
(возможно потому, что вы получаете сообщение об ошибке 'host not found
(машина не найдена)' при попытке подключения), то попытайтесь
использовать IP-адрес сервера: '\\\'.
Для того, чтобы имена отображались правильно, вы может понадобиться
установить некоторые настройки в соответствующем разделе ресурса. Это
работает с клиентами под управлением 95/98/NT, но может быть
необходимо будет изменить эти настройки, если вы используете клиентов
с Windows 3.X:
______________________________________________________________________
; Mangle case = yes seems to give the correct filenames
; for Win95/98/NT.
mangle case = yes
; If samba is case sensitive when looking for files
case sensitive = no
; Default case of files that are created
default case = lower
; Preserve case for all filenames
preserve case = yes
; Preserve case for dos (8.3) filenames
short preserve case = no
______________________________________________________________________
Замечание: Значение после знака / это ссылка на сетевую маску. Для
сети класса С этим значением будет "24". Для дополнительной информации
о том как выполнять вычисления для подсетей, вы можете посмотреть
информацию по адресу
http://www.ziplink.net/~ralphb/IPSubnet/index.html
.
Конечно настройка Samba более полна, чем мы привели здесь, но это даст
вам возможность начать работать. Если вы хотите сделать что-то более
сложное, то я рекомендую вам сходить на сервер Samba, упомянутый выше.
Чтобы сделать эту директорию доступной для чтения всеми, но разрешить
писать в нее только людям из группы staff, измените запись как
показано в следующем примеру:
______________________________________________________________________
[public]
comment = Public Stuff
path = /home/public
public = yes
writable = yes
printable = no
write list = @staff
______________________________________________________________________
Для описания других приемов для изменения доступа к дискам, смотрите
документацию на Samba и справочные страницы.
77.. ДДооссттуупп кк ддииссккаамм WWiinnddoowwss иизз LLiinnuuxx
Программа клиента SMB для UNIX-машин включена в дистрибутив Samba. Она
обеспечивает ftp-подобный интерфейс командной строки. Вы можете
использовать эту утилиту для переноса файлов между 'сервером' под
управлением Windows и клиентом под Linux.
Для того, чтобы увидеть какие ресурсы доступны на данной машине,
выполните команду:
______________________________________________________________________
/usr/sbin/smbclient -L host
______________________________________________________________________
где 'host' это имя машины, которую вы хотите видеть. Эта команда
вернет список имен 'сервисов' - т.е. имен дисков или принтеров к
которым может быть получен доступ. До тех пор, пока SMB сервер не
будет настроен без управления доступом, он будет запрашивать у вас
пароль. Введите в ответ на запрос пароль для пользователя 'гость
(guest)' или ваш персональный пароль на этой машине.
Например:
______________________________________________________________________
smbclient -L zimmerman
______________________________________________________________________
Вывод этой команды должен выглядеть примерно так:
______________________________________________________________________
Server time is Sat Aug 10 15:58:27 1996
Timezone is UTC+10.0
Password:
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
Server=[ZIMMERMAN] User=[] Workgroup=[WORKGROUP] Domain=[]
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
public Disk Public
C$ Disk Default share
IPC$ IPC Remote IPC
OReilly Printer OReilly
print$ Disk Printer Drivers
This machine has a browse list:
Server Comment
--------- -------
HOPPER Samba 1.9.15p8
KERNIGAN Samba 1.9.15p8
LOVELACE Samba 1.9.15p8
RITCHIE Samba 1.9.15p8
ZIMMERMAN
______________________________________________________________________
Browse list показывает другие SMB сервера в сети с доступными
ресурсами.
Для использования клиента, выполните следующую команду:
______________________________________________________________________
/usr/sbin/smbclient service
______________________________________________________________________
где 'service' -- имя машины и сервиса. Например, если вы пытаетесь
обратиться к директории, которая доступна под именем 'public' на
машине названной 'zimmerman', то имя сервиса должно звучать как
\\zimmerman\public. Однако в следствии ограничений оболочки, вам
необходимо спрятать обратный слэш, так что в итоге это командная
строка выглядеть следующим образом:
______________________________________________________________________
/usr/sbin/smbclient \\\\zimmerman\\public mypasswd
______________________________________________________________________
где 'mypasswd' -- символьная строка вашего пароля.
Вы получите приглашение smbclient:
______________________________________________________________________
Server time is Sat Aug 10 15:58:44 1996
Timezone is UTC+10.0
Domain=[WORKGROUP] OS=[Windows NT 3.51] Server=[NT LAN Manager 3.51]
smb: \>
______________________________________________________________________
Напечатайте 'h' чтобы получить помощь об использовании smbclient:
______________________________________________________________________
smb: \> h
ls dir lcd cd pwd
get mget put mput rename
more mask del rm mkdir
md rmdir rd prompt recurse
translate lowercase print printmode queue
cancel stat quit q exit
newer archive tar blocksize tarmode
setmode help ? !
smb: \>
______________________________________________________________________
Если вы умеете использовать ftp, то вам не будут нужны справочные
страницы о smbclient.
Хотя вы можете использовать smbclient для тестирования, вы скоро
устанете использовать его в работе. Для работы вам скорее всего
понадобится пакет smbfs. Smbfs поставляется с двумя простыми
утилитами, smbmount и smbumount. Они работают подобно mount и umount
для SMB-ресурсов.
Пакет smbfs теперь включен в большинство дистрибутивов Linux. Вам
необходимо помнить одну важную вещь: Для того чтобы использовать эти
утилиты вам необходима поддержка smbfs в ядре.
88.. ДДооссттуупп кк ппррииннттеерруу LLiinnuuxx ддлляя WWiinnddoowwss--ммаашшиинн
Для организации доступа к 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 для печати прямо на принтер, вместо использования
буферизации на сервере.
99.. ДДооссттуупп кк ппррииннттеерруу WWiinnddoowwss сс ммаашшиинн ррааббооттааюющщиихх ппоодд LLiinnuuxx
Для доступа к принтеру на Windows машине, вы должны сделать следующее:
1. ВЫ должны иметь правильные записи в файле /etc/printcap и они
должны соответствовать локальной структуре директорий (для буферной
директории, и т.п.)
2. У вас должен быть скрипт /usr/bin/smbprint. Он поставляется вместе
с исходными текстами Samba, но не со всеми двоичными дистрибутивами
Samba. Его немного модифицированная копия обсуждается ниже.
3. Если вы хотите преобразовывать ASCII файлы в Postscript, вы должны
иметь программу nenscript, или ее эквивалент. nenscript -- это
конвертер Postscript, он обычно устанавливается в директорию
/usr/bin.
4. Вы можете захотеть сделать печать через Samba более легкой,
используя программы-надстройки. Простой скрипт на perl, который
обрабатывает ASCII, Postscript или преобразованный Postscript
приведен ниже.
5. Вы также можете использовать MagicFilter для того, чтобы выполнить,
описанное выше. Подробности о настройке MagicFilter приводятся
ниже. MagicFilter имеет преимущества, потому, что он знает как
автоматически преобразовывать достаточно большое количество
форматов файлов.
Запись в файле /etc/printcap, приведенном ниже, сделана для принтера
HP 5MP на сервере Windows NT. Используются следующие поля файла
/etc/printcap:
______________________________________________________________________
cm - комментарий
lp - имя устройства, открываемого для вывода
sd - директория спула принтера (на локальной машине)
af - файл учета пользования принтером
mx - максимальный размер файла (ноль -- без ограничений)
if - имя входного фильтра (скрипта)
______________________________________________________________________
Для более детальной информации о печати смотрите _P_r_i_n_t_i_n_g _H_O_W_T_O или
справочные страницы по printcap.
______________________________________________________________________
# /etc/printcap
#
# //zimmerman/oreilly via smbprint
#
lp:\
:cm=HP 5MP Postscript OReilly on zimmerman:\
:lp=/dev/lp1:\
:sd=/var/spool/lpd/lp:\
:af=/var/spool/lpd/lp/acct:\
:mx#0:\
:if=/usr/bin/smbprint:
______________________________________________________________________
Убедитесь, что буферные директории и директория, используемая для
учета пользования существуют и имеют право на запись. Убедитесь, что
строка 'if' содержит правильный путь к скрипту smbprint (дан ниже) и
убедитесь, что записи указывают на правильное устройство вывода
(специальный файл /dev).
Далее идет сам скрипт smbprint. Он обычно находится в директории
/usr/bin и написан Andrew Tridgell, человеком, который пакет создал
Samba, насколько я знаю. Этот скрипт поставляется вместе с
дистрибутивом исходного кода Samba, но отсутствует в некоторых
бинарных дистрибутивах, так что я воссоздал его здесь.
Вы можете захотеть взглянуть на него более внимательно. Есть некоторые
мелкие изменения, которые показали себя полезными.
______________________________________________________________________
#!/bin/sh -x
# Этот скрипт является входным фильтром для основанной на printcap
# печати на unix-машинах. Он использует программу smbclient для
# печати файла на указанный smb-сервер и сервис.
# Например вы можете иметь запись в printcap подобную этой
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# которая создает unix-принтер названный "smb", который будет
# печатать с помощью этого скрипта. Вам необходимо создать директорию
# спула /usr/spool/smb с соответствующими правами и владельцем
# Установите здесь сервер и сервис на который вы хотите печатать. В
# этом примере я имею PC с WfWg PC, названную "lapland", которая
# имеет экспортируемый принтер, называемый "printer" без пароля
#
# Далее скрипт был изменен hamiltom@ecnz.co.nz (Michael Hamilton)
# так что сервер, сервис и пароль могут быть считаны из файла
# /usr/var/spool/lpd/PRINTNAME/.config
#
# Для того чтобы это работало запись в /etc/printcap должна
# включать файл учета использования (af=...):
#
# cdcolour:\
# :cm=CD IBM Colorjet on 6th:\
# :sd=/var/spool/lpd/cdcolour:\
# :af=/var/spool/lpd/cdcolour/acct:\
# :if=/usr/local/etc/smbprint:\
# :mx=0:\
# :lp=/dev/null:
#
# Файл /usr/var/spool/lpd/PRINTNAME/.config должен содержать
# server=PC_SERVER
# service=PR_SHARENAME
# password="password"
#
# Например,
# server=PAULS_PC
# service=CJET_371
# password=""
#
# Debugging log file, change to /dev/null if you like.
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
#
# The last parameter to the filter is the accounting file name.
#
spool_dir=/var/spool/lpd/lp
config_file=$spool_dir/.config
# Should read the following variables set in the config file:
# server
# service
# password
# user
eval `cat $config_file`
#
# Some debugging help, change the >> to > if you want to same space.
#
echo "server $server, service $service" >> $logfile
(
# NOTE You may wish to add the line `echo translate' if you want automatic
# CR/LF translation when printing.
echo translate
echo "print -"
cat
) | /usr/bin/smbclient "\\\\$server\\$service" $password -U $user -N -P >> $logfile
______________________________________________________________________
Большинство дистрибутивов Linux поставляется с программой nenscript
для преобразования ASCII документов в Postscript. Следующий скрипт на
perl делает жизнь пользователя легче, обеспечивая простой интерфейс
для печати используя smbprint.
______________________________________________________________________
Использование: print [-a|c|p]
-a печатает как ASCII
-c печатает отформатированный как исходный код
-p печатает как Postscript
Если опции не заданы, программа попробует определить
тип файла и печатать соответственно
______________________________________________________________________
Используя smbprint для печати ASCII файлов, скрипт следит за длинными
строками. Если возможно, этот скрипт разрывает длинную строку на
пробеле (вместо разрыва в середине слова).
Форматирование исходного кода выполняется с помощью программы
nenscript. Она берет ASCII-файл и форматирует его в 2 колонки с
заголовком (дата, имя файла и т.п.). Эта программа также нумерует
строки. Используя этот скрипт как пример, могут быть добавлены другие
типы форматирования.
Postscript-документы являются уже отформатированы, так что они
печатаются сразу.
______________________________________________________________________
#!/usr/bin/perl
# Скрипт: print
# Авторы: Brad Marshall, David Wood
# Plugged In Communications
# Дата: 960808
#
# Используется для печати на сервис oreilly, который расположен на
# сервере zimmerman
# Назначение: Берет файлы разных типов как аргумент и обрабатывает
# их соответственно для передачи на скрипт печать Samba.
#
# В настоящее время поддерживаются типы файлов:
#
# ASCII - Если длина строки длиннее чем $line_length символов, то
# переносит строку на пробеле
# Postscript - Берет без обработки
# Code - Форматирует в Postscript (используя nenscript), чтобы
# отображать правильно (альбомный формат, фонт и т.п.)
#
# Установить максимальную длину строки ASCII текста
$line_length = 76;
# Установить путь к скрипту печати Samba
$print_prog = "/usr/bin/smbprint";
# Установить путь и имя nenscript (конвертера ASCII-->Postscript)
$nenscript = "/usr/bin/nenscript";
unless ( -f $print_prog ) {
die "Can't find $print_prog!";
}
unless ( -f $nenscript ) {
die "Can't find $nenscript!";
}
&ParseCmdLine(@ARGV);
# DBG
print "filetype is $filetype\n";
if ($filetype eq "ASCII") {
&wrap($line_length);
} elsif ($filetype eq "code") {
&codeformat;
} elsif ($filetype eq "ps") {
&createarray;
} else {
print "Sorry..no known file type.\n";
exit 0;
}
# Pipe the array to smbprint
open(PRINTER, "|$print_prog") || die "Can't open $print_prog: $!\n";
foreach $line (@newlines) {
print PRINTER $line;
}
# Send an extra linefeed in case a file has an incomplete last line.
print PRINTER "\n";
close(PRINTER);
print "Completed\n";
exit 0;
# --------------------------------------------------- #
# Everything below here is a subroutine #
# --------------------------------------------------- #
sub ParseCmdLine {
# Parses the command line, finding out what file type the file is
# Gets $arg and $file to be the arguments (if the exists)
# and the filename
if ($#_ < 0) {
&usage;
}
# DBG
# foreach $element (@_) {
# print "*$element* \n";
# }
$arg = shift(@_);
if ($arg =~ /\-./) {
$cmd = $arg;
# DBG
# print "\$cmd found.\n";
$file = shift(@_);
} else {
$file = $arg;
}
# Defining the file type
unless ($cmd) {
# We have no arguments
if ($file =~ /\.ps$/) {
$filetype = "ps";
} elsif ($file =~ /\.java$|\.c$|\.h$|\.pl$|\.sh$|\.csh$|\.m4$|\.inc$|\.html$|\.htm$/) {
$filetype = "code";
} else {
$filetype = "ASCII";
}
# Process $file for what type is it and return $filetype
} else {
# We have what type it is in $arg
if ($cmd =~ /^-p$/) {
$filetype = "ps";
} elsif ($cmd =~ /^-c$/) {
$filetype = "code";
} elsif ($cmd =~ /^-a$/) {
$filetype = "ASCII"
}
}
}
sub usage {
print "
Использование: print [-a|c|p]
-a печатает как ASCII
-c печатает отформатированный как исходный код
-p печатает как Postscript
Если опции не заданы, программа попробует определить
тип файла и печатать соответственно\n
";
exit(0);
}
sub wrap {
# Create an array of file lines, where each line is < the
# number of characters specified, and wrapped only on whitespace
# Get the number of characters to limit the line to.
$limit = pop(@_);
# DBG
#print "Entering subroutine wrap\n";
#print "The line length limit is $limit\n";
# Read in the file, parse and put into an array.
open(FILE, "<$file") || die "Can't open $file: $!\n";
while() {
$line = $_;
# DBG
#print "The line is:\n$line\n";
# Wrap the line if it is over the limit.
while ( length($line) > $limit ) {
# DBG
#print "Wrapping...";
# Get the first $limit +1 characters.
$part = substr($line,0,$limit +1);
# DBG
#print "The partial line is:\n$part\n";
# Check to see if the last character is a space.
$last_char = substr($part,-1, 1);
if ( " " eq $last_char ) {
# If it is, print the rest.
# DBG
#print "The last character was a space\n";
substr($line,0,$limit + 1) = "";
substr($part,-1,1) = "";
push(@newlines,"$part\n");
} else {
# If it is not, find the last space in the
# sub-line and print up to there.
# DBG
#print "The last character was not a space\n";
# Remove the character past $limit
substr($part,-1,1) = "";
# Reverse the line to make it easy to find
# the last space.
$revpart = reverse($part);
$index = index($revpart," ");
if ( $index > 0 ) {
substr($line,0,$limit-$index) = "";
push(@newlines,substr($part,0,$limit-$index)
. "\n");
} else {
# There was no space in the line, so
# print it up to $limit.
substr($line,0,$limit) = "";
push(@newlines,substr($part,0,$limit)
. "\n");
}
}
}
push(@newlines,$line);
}
close(FILE);
}
sub codeformat {
# Call subroutine wrap then filter through nenscript
&wrap($line_length);
# Pipe the results through nenscript to create a Postscript
# file that adheres to some decent format for printing
# source code (landscape, Courier font, line numbers).
# Print this to a temporary file first.
$tmpfile = "/tmp/nenscript$$";
open(FILE, "|$nenscript -2G -i$file -N -p$tmpfile -r") ||
die "Can't open nenscript: $!\n";
foreach $line (@newlines) {
print FILE $line;
}
close(FILE);
# Read the temporary file back into an array so it can be
# passed to the Samba print script.
@newlines = ("");
open(FILE, "<$tmpfile") || die "Can't open $file: $!\n";
while() {
push(@newlines,$_);
}
close(FILE);
system("rm $tmpfile");
}
sub createarray {
# Create the array for postscript
open(FILE, "<$file") || die "Can't open $file: $!\n";
while() {
push(@newlines,$_);
}
close(FILE);
}
______________________________________________________________________
Теперь о применении MagicFilter. Спасибо Alberto Menegazzi
(flash.egon@iol.it) за его информацию.
Alberto сообщил:
--------------------------%<---------------------------------- 1)
Установите MagicFilter в /usr/bin/local с фильтрами для необходимых
принтеров, но НЕ заполняйте записи в /etc/printcap, как предполагается
в документации на MagicFilter.
2) Запишите в /etc/printcap примерно вот такую запись (Это сделано для
моего принтера LaserJet 4L):
lp|ljet4l:\ :cm=HP LaserJet 4L:\ :lp=/dev/null:\
# or /dev/lp1 :sd=/var/spool/lpd/ljet4l:\
:af=/var/spool/lpd/ljet4l/acct:\ :sh:mx#0:\ :if=/usr/local/bin/main-
filter:
Вы должны, объяснить, что устройство lp=/dev/... открывается для
блокирования, так что для каждого удаленного принтера используется
одно "виртуальное устройство".
Пример создания : touch /dev/ljet4l
3) Напишите фильтр /usr/local/bin/main-filter, с таким же образом
предполгая использование ljet4l-filter вместо cat.
Вот так для меня.
#! /bin/sh logfile=/var/log/smb-print.log
spool_dir=/var/spool/lpd/ljet4l ( echo "print -"
/usr/local/bin/ljet4l-filter ) | /usr/bin/smbclient "\\\\SHIR\\HPLJ4"
-N -P >> $logfile
P.S. : Это цитата из Print2Win mini-Howto о блокировании и зачем
создавать виртуальные принтера
---Начало здесь --------- Совет от Rick Bressler :
Good tip sheet. I use something very similar. One helpful tip, this
is not a particularly good idea:
:lp=/dev/null:\
lpr does an 'exclusive' open on the file you specify as lp=. It does
this in order to prevent multiple processes from trying to print to
the dame printer at the same time.
The side effect of this is that in your case, eng and colour can't
print at the same time, (usually more or less transparent since they
probably print quickly and since they queue you probably don't notice)
but any other process that tries to write to /dev/null will break!
On a single user system, probably not a big problem. I have a system
with over 50 printers. It would be a problem there.
The solution is to create a dummy printer for each. Eg: touch
/dev/eng.
I have modified the lp entries in the printcap file above to take into
account Rick's suggestion. I did the following:
#touch /dev/eng #touch /dev/colour
---Ends here
--------------------------%<----------------------------------
1100.. BBaacckkiinngg UUpp WWiinnddoowwss MMaacchhiinneess ttoo aa LLiinnuuxx HHoosstt
Adam Neat (adamneat@ipax.com.au) kindly contributed the following
script to back up Windows machines to a Linux host, using the
smbclient utility. Adam says that it is used to backup Windows 3.x
and NT machines to a Linux based DAT SCSI Drive.
Adam is not proud of the coding style used here, but it works. As I
like to say, "If it works and its stupid, then it is not stupid".
In this script, the string 'agnea1' is the username on the Linux
machine that does the backups.
______________________________________________________________________
#!/bin/bash
clear
echo Initialising ...
checkdate=`date | awk '{print $1}'`
if [ -f "~agnea1/backup-dir/backup-data" ]; then
echo "ERROR: No config file for today!"
echo "FATAL!"
exit 1
fi
if [ -d "~agnea1/backup-dir/temp" ]; then
echo "ERROR: No tempoary directory found!"
echo
echo "Attempting to create"
cd ~agnea1
cd backup-dir
mkdir temp
echo "Directory Made - temp"
fi
if [ "$1" = "" ]; then
echo "ERROR: enter in a machine name (ie: cdwriter)"
exit 1
fi
if [ "$2" = "" ]; then
echo "ERROR: enter in a SMB (Lan Manager) Resource (ie: work)"
exit 1
fi
if [ "$3" = "" ]; then
echo "ERROR: enter in an IP address for $1 (ie:
130.xxx.xxx.52)" exit 1
fi
#############################################################################
# Main Section
#
#############################################################################
cd ~agnea1/backup-dir/temp
rm -r ~agnea1/backup-dir/temp/*
cd ~agnea1/backup-dir/
case "$checkdate"
in
Mon)
echo "Backuping for Monday"
cat backup-data | /usr/local/samba/bin/smbclient
\\\\$1\\$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Monday" ]; then
echo "Directory Monday Not found ...
making" mkdir
~agnea1/backup-dir/Monday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf monday.tar * echo "done ..."
rm ~agnea1/backup-dir/Monday/monday.tar
mv monday.tar ~agnea1/backup-dir/Monday
;;
Tue)
echo "Backuping for Tuesday"
cat backup-data | /usr/local/samba/bin/smbclient
\\\\$1\\$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Tuesday" ]; then
echo "Directory Tuesday Not found ...
making" mkdir
~agnea1/backup-dir/Tuesday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf tuesday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Tuesday/tuesday.tar
mv tuesday.tar ~agnea1/backup-dir/Tuesday
;;
Wed)
echo "Backuping for Wednesday"
cat backup-data | /usr/local/samba/bin/smbclient
\\\\$1\\$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Wednesday" ]; then
echo "Directory Wednesday Not found
... making" mkdir
~agnea1/backup-dir/Wednesday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf wednesday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Wednesday/wednesday.tar
mv wednesday.tar ~agnea1/backup-dir/Wednesday
;;
Thu)
echo "Backuping for Thrusday"
cat backup-data | /usr/local/samba/bin/smbclient
\\\\$1\\$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Thursday" ]; then
echo "Directory Thrusday Not found ...
making" mkdir
~agnea1/backup-dir/Thursday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf thursday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Thursday/thursday.tar
mv thursday.tar ~agnea1/backup-dir/Thursday
;;
Fri)
echo "Backuping for Friday"
cat backup-data | /usr/local/samba/bin/smbclient
\\\\$1\\$2 -I$3 -N echo "Complete"
if [ -d "~agnea1/backup-dir/Friday" ]; then
echo "Directory Friday Not found ...
making" mkdir
~agnea1/backup-dir/Friday
fi
echo "Archiving ..."
cd ~agnea1/backup-dir/temp
tar -cf friday.tar *
echo "done ..."
rm ~agnea1/backup-dir/Friday/friday.tar
mv friday.tar ~agnea1/backup-dir/Friday
;;
*)
echo "FATAL ERROR: Unknown variable passed for day"
exit 1;;
esac
###########
______________________________________________________________________
1111.. ААввттооррссккииее ппрраавваа
Авторскими правами на этот документ владеет David Wood, 1996-9. Он
может воспроизводится в любой форме и свободно распространяться, при
сохранении файла неизменным, включая это заявление.
1122.. ББллааггооддааррннооссттии
Brad Marshall (bmarshall@plugged.net.au) и Jason Parker
(jparker@plugged.net.au) нашедших время, проявивших настойчивость,
написавших скрипт и проводивших эксперименты.
Adam Neat (adamneat@ipax.com.au) предоставившего скрипт для сохранения
данных с машины под Windows на машину с Linux.
Matthew Flint (matthew@philtrum.demon.co.uk) рассказавшему мне об
использовании настройки 'interfaces' в файле smb.conf.
Oleg L. Machulskiy (machulsk@shade.msu.ru), Jeff Stern
(jstern@eclectic.ss.uci.edu), Dr. Michael Langner (langner@fiz-
chemie.de and Erik Ratcliffe (erik@caldera.com) предложивших изменения
в раздел об организации доступа к принтерам Linux для машин с Windows.
Alberto Menegazzi (flash.egon@iol.it) предоставившему мне настройки
для MagicFilter, чтобы он могу обеспечивать доступ к принтерам Windows
для машин с Linux.
Andrea Girotto (icarus@inca.dei.unipd.it) пославшему мне некоторое
количество пожеланий относительно данного документа.
Также благодарю всех национальных переводчиков, которые перенесли этот
документ в мир не говорящий по Английски: Takeo Nakano
(nakano@apm.seikei.ac.jp), Klaus-Dieter Schumacher (Klaus-
Dieter.Schumacher@fernuni-hagen.de), Andrea Girotto
(icarus@inca.dei.unipd.it) и многих других. о которых я не имею
контактной информации.