Денис Колисниченко - Linux-сервер своими руками Страница 66
Денис Колисниченко - Linux-сервер своими руками читать онлайн бесплатно
Использовать программу smbclient не очень удобно. Гораздо удобнее использовать программу smbmount, которая умеет монтировать удаленный общий ресурс как обычную файловую систему. При этом впоследствии использовать общий ресурс становится гораздо приятнее и удобнее. Ниже приведен пример команды, которая монтирует общий ресурс customers компьютера nt, используя имя пользователя user. Точка монтирования — каталог /mnt/customers, идентификатор пользователя (UID) равен 500, а группы (GID) — 100:
smbmount //nt//customers –U user –c 'mount /mnt/customers –u 500 –g 100'
Для этих же целей можно воспользоваться командой:
smbmount //nt/customers/ /mnt/customers –U user
Примечание. Использовать команду smbmount имеет право только пользователь root. Для того, чтобы обычный пользователь мог использовать эту программу, следует установить для нее атрибут Setuid root, однако такое решение является небезопасным. Выходом из этого положения может послужить запуск программы smbmount при загрузке системы. Добавьте в сценарии автозагрузки вызов программы smbmount для монтирования файловых систем совместного использования, с которыми вы работаете чаще всего. После этого обычные пользователи смогут работать с удаленными ресурсами как с обычной локальной файловой системой.
Рис. 9.4. Общие ресурсы
Просмотреть общие ресурсы компьютера можно с помощью опции –L (см. рис. 9.4).
Список Browse list (см. рис. 9.4) показывает другие smb-сервера в сети с доступными ресурсами. Опция –I разрешает программе smbclient работать с именами DNS. Например, если домен называется domain.ru, то просмотреть общие ресурсы компьютера nt_ws1 можно командой:
$ smbclient –L –I nt ws1.domain.ru
9.4. Доступ к принтеру Linux для Windows-машин
Для обеспечения поддержки печати мы уже сделали почти все возможное. Параметр секции [global] load printers загружает принтеры из файла /etc/printcap (см. листинг 9.1). Используется система печати BSD. Теперь осталось определить секцию [printers] файла smb.conf (см. листинг 9.5). В этой секции задаются глобальные параметры для всех принтеров, поэтому нет необходимости указывать их отдельно для каждого принтера.
Листинг 9.5. Секция [printers][printers]
comment = All Printers
security=server
path = /var/spool/lpd/lp
browseable = no
printable = yes
public = yes
writable = no
create mode = 0700
Некоторые параметры, используемые в этой секции (browseable, writable, comment), имеют те же значения, что и в секции [homes]. Параметр path задает буферный каталог, в который файлы будут копироваться перед печатью (так называемый спул принтера). Параметр public в значении yes разрешает печать из-под гостевой учетной записи, то есть всем желающим. Чтобы запретить печать из-под гостевой учетной записи укажите public=no. В этом случае доступ к принтеру будут иметь только зарегистрированные на сервере пользователи. Вместо параметра public иногда используется его синоним — параметр guest ok. Параметр writable установлен в значении по для того, чтобы в буферный каталог принтера (спул) могли записываться только печатаемые файлы.
Возможно, вам потребуется разрешить печать только одному или нескольким определенным пользователям на каком-то определенном принтере. Сделать это можно так, как это показано в листинге 9.6.
Листинг 9.6. Разрешение печати определенному пользователю[admprn]
valid user = root admin administrator
path = /home/admin
printer = canon
public = no
writeable = no
printable = yes
Подключение к Windows-компьютеру сетевого принтера, подключенного к Linux-серверу или Linux-станции, осуществляется аналогично подключению обыкновенного сетевого принтера, подключенного к рабочей станции Windows. В операционной системе Windows 98 для этого проделайте следующие действия:
1. Выполните команду меню Пуск→Настройка→Принтеры.
2. Активизируйте мастера Установки принтера.
3. Выберите тип принтера: сетевой.
4. Укажите путь к принтеру или нажмите на кнопку «Обзор» для автоматического выбора ресурса (см. рис. 9.5).
5. Далее установка сетевого принтера аналогична установке локального.
Рис. 9.5. Подключение сетевого принтера
9.5. Доступ к Windows-принтеру с компьютеров, работающих под Linux
Прежде всего, вам нужно создать правильные записи в файле /etc/printcap. С форматом этого файла вы можете ознакомиться в листинге 9.7.
Листинг 9.7. Файл printcap# /etc/printcap
#
# //nt_wsl/hp5m via smbprint
#
lp:\
# просто комментарий
:cm=HP 5MP Postscript hp5m on nt_wsl:\
# имя устройства, открываемого для вывода
:lp=/dev/lp0:\
# директория спула принтера (на локальной машине)
:sd=/var/spool/lpd/lp:\
# файл учета использования принтера
:af=/var/spool/lpd/lp/acct:\
# максимальный размер файла.
# Если указано, значение «ноль», то ограничение снимается
:mx#0:\
# имя фильтра
:if=/usr/bin/smbprint:
В листинге 9.7 приведено (в комментариях) описание полей файла printcap, но, я думаю, не помешает отдельно привести их перечень:
cm — задает комментарий;
lp — имя устройства, открываемого для вывода;
sd — директория спула принтера на локальной машине;
af — файл учета использования принтера;
mx — максимальный размер файла. Если указано значение «ноль», то ограничение снимается;
if — имя входного фильтра.
Возвращаясь к настройке доступа, убедитесь, что каталог для спула принтера существует и разрешен для записи. Также нужно указать существующее устройство для вывода. В листинге 9.7 этим устройством является /dev/lp0. В пакет Samba входит сценарий smbprint. С помощью этого сценария можно распечатывать документы на сетевом принтере, используя сервисы SMB. Возможно, в состав вашего пакета он не входит, поэтому я воссоздал его в листинге 9.8. Этот листинг частично позаимствован из руководства по пакету Samba.
Листинг 9.8. Сценарий smbprint#!/bin/sh –x
# (с) Andrew Tridgell
# Этот скрипт является фильтром для системы печати, использующей
# файл /etc/printcap
# Он использует программу smbclient для печати файла на сетевом
# принтере, который подключен к рабочей станции Windows.
#
# smb:lp=/dev/null:sd=/usr/spool/smb:sh:if=/usr/local/samba/smbprint
#
# Запись создает unix-принтер, названный "smb", который будет
# печатать с помощью этого скрипта. Вам необходимо создать директорию
# спула /usr/spool/smb с соответствующими правами и владельцем
# Установите здесь имя сервера и принтер, на который вы хотите печатать.
# Далее скрипт был изменен Майклом Гамильтоном (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/Ipd/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=""
#
# Файл для отладочной информации, можно изменить на /dev/null
#
logfile=/tmp/smb-print.log
# logfile=/dev/null
spool_dir=/var/spool/Ipd/lp
config_file=$spool_dir/. config
eval `cat $config_file `
echo "server $server, service $service" >> $logfile
(
echo translate
echo "print –"
cat
) | /usr/bin/smbclient "\\\\$server\\$service" $password –U $user –N –P >> $logfile
Теперь вы можете печатать на сетевом принтере. Но, тем не менее, я все же рекомендую прочитать руководство по пакету Samba для получения более подробной информации о печати на сетевых принтерах.
9.6. Пример файла smb.conf
В листинге 9.9 приведен пример моего файла /etc/smb.conf. Скорее всего он и у вас тоже будет корректно работать.
Листинг 9.9. Файл smb.conf[global]
workgroup = WORK
comment = Linux Server
guest account = guest
security = share
printing = bsd
printcap name = /etc/printcap
load printers = yes
client code page = 866
character set = koi8-r
encrypt passwords = Yes
log file = /var/log/samba/log.%m
max log size = 50
# Следующие строки я закомментировал, потому что они характерны
Жалоба
Напишите нам, и мы в срочном порядке примем меры.