Комбинации клавиш с кнопкой windows

Файл: smb.conf          Строка 1 Позиция 0 11118 байт                                           7%

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of

   workgroup = NET

# server string is the equivalent of the NT Description field

   server string = Panteleev

# Windows Internet Name Serving Support Section:

# WINS Support — Tells the NMBD component of Samba to enable its WINS Server

#   wins support = no

# WINS Server — Tells the NMBD components of Samba to be a WINS Client

# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both

;   wins server = w.x.y.z

# This will prevent nmbd to search for NetBIOS names through DNS.

   dns proxy = no

# What naming service and in what order should we use to resolve host names

____________________________________________________________________________

panteleev@panteleev-desktop:~$ testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)

Processing section «[printers]»

Processing section «[print$]»

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

       [global]

   workgroup = NET

   server string = Panteleev

   security = SHARE

   syslog = 0

   log file = /var/log/samba/log.%m

   max log size = 1000

   printcap name = cups

   dns proxy = No

   usershare allow guests = Yes

   panic action = /usr/share/samba/panic-action %d

[printers]

   comment = All Printers

   path = /var/spool/samba

   create mask = 0700

   guest ok = Yes

   printable = Yes

   browseable = No

   browsable = No

[print$]

   comment = Printer Drivers

   path = /var/lib/samba/printers

panteleev@panteleev-desktop:~$

В офисной сети вы можете печатать напрямую с Linux устройств на общие сетевые принтеры, подключенные к Windows компьютерами. В этой статье мы покажем, как настроить печать из Linux на сетевой принтер, опубликованный на компьютере с Windows 10/11.

  1. Начнем с настройки Windows компьютера, к которому подключен принтер.Опубликуйте общий сетевой принтер в Windows. Откройте консоль управления принтерами (
    printmanagement.msc
    ), откройте свойства принтера, перейдите на вкладку Sharing, включите опцию Share this printer и задайте сетевое имя принтера (имя не должно содержать пробелы или спец символы);
  2. Создайте отдельного локального пользователя winusr1 с известным паролем. Можно удалить пользователя из локальной группы Users, сделать срок действия пароля не ограниченным и запретить менять пароль.

    Можно с помощью PowerShell создать локального пользователя с указанными настройками:
    $pass = ConvertTo-SecureString "p-0m-2024" -AsPlainText -Force
    New-LocalUser -Name winusr1 -Password $pass -PasswordNeverExpires -UserMayNotChangePassword
    Remove-LocalGroupMember -Group Users -Member winusr1

По умолчанию в Windows сетевые принтеры доступны по протоколу SMB. Чтобы проверить доступ к принтеру из Linux, установите smbclient:

В Ubuntu/Debian выполните команду:

$ sudo apt install smbclient

Чтобы вывести список SMB ресурсов на удаленном компьютере

$ smbclient -L \\192.168.31.94 -U winusr1

Где:

  • 192.168.31.94 – IP адрес или имя компьютера с Windows
  • winusr1 – имя пользователя Windows

Команда выведет список опубликованных сетевых папок (в том числе общих административных папок) и принтеров.

Из консоли вы можете проверить доступность SMB принтера и отправить файл на печать:

$ smbclient -W DOMAIN -U winusr1//192.168.31.94/HPM1530

Распечатать указанный файл:
smb: \> print /home/sysops/test.txt

printing file test.txt as test.txt (196,6 kb/s) (average 196,6 kb/s)

smb: \> quit

Для удобного доступа к сетевым принтерам и их управлением проще всего воспользоваться встроенным сервером печати для Linux – CUPS (Common UNIX Printing System). Для управления CUPS используется веб интерфейс system-config-printer.

В большинстве десктопных дистрибутивов Linux пакет CUPS и system-config-printer установлены по умолчанию. Проверьте это (если нужно, установите):
$ dpkg -l cups
$ dpkg -l system-config-printer
$ systemctl status cups

Теперь можно подключить сетевой принтер в Linux:

  1. Откройте веб-интерфейс CUPS, перейдя в браузере по URL
    localhost:631
    ;
  2. Перейдите в Administration -> Add printer -> Other network printers -> Windows Printer via SAMBA;
  3. Укажите параметры подключения к принтеру в формате
    smb://winusr1:[email protected]/HPM1530
    (строка содержит имя пользователя и пароль, имя/IP удаленного Windows хоста и имя принтера);

    Подключение SMB принтера с Windows компьютера в Linux

  4. Затем задайте имя и описание принтера;
  5. На следующем шаге CUPS предложит выбрать производителя принтера и модель (для установки соответствующего драйвера). Список драйверов может быть довольно большим. Для быстрого поиска названия драйвера по модели принтера воспользуйтесь командой:
    $ lpinfo -m| grep 1536

    lpinfo - список доступных драйверов cups

    Выберите найденный драйвер в CUPS.

  6. Установка принтера завершена.

Где найти драйвера для CUPS под Linux. Например, в случае с принтерами HP, в большинстве десктопных дистрибутивов Linux предустановлен пакет HP Linux Printing and Imaging System (HPLIP). В нем содержится драйвера для подавляющего большинства принтеров.

$ dpkg -l hplip

HP Linux Printing and Imaging System (HPLIP)

Можно установить пакет HPLIP вручную:

$ sudo apt install hplip hplip-gui

Аналогичные пакеты с драйверами выпускают и другие вендоры, либо вы можете самостоятельно найти готовый PPD файл для конкретного принтера. Также вы можете использовать огромную библиотеку PPD драйверов печати foomatic (автоматически устанавливается для ubuntu-desktop):

$ apt install foomatic-db-compressed-ppds

Первая попытка отправить документ из Linux на печать в Windows завершилась с ошибкой. Информация об ошибке печати есть логе /var/log/cups/error_log:

E [22/Jan/2024:11:38:35 +0400] [Job 13] SMB connection failed!
E [22/Jan/2024:11:38:35 +0400] [Job 13] Unable to connect to CIFS host:

CUPS: SMB connection failed

Эта ошибка указывает на то, что CUPS не может подключиться к SMB папке принтера на Linux. Причина в том, что по умолчанию для доступа к сетевой папке smbclient Linux использует протокол SMB 1.0, который по умолчанию отключен в Windows 10 и 11.

Чтобы клиент SMB в Linux использовал более безопасный SMB 2 или 3 для подключения, отредактируйте файл /etc/samba/smb.conf. Добавьте в секцию [global] строки:

client min protocol = SMB2
client max protocol = SMB3

Перезапустите CUPS:

$ sudo systemctl restart cups

Теперь клиент Linux сможет успешно отправить задание на общий принтер в Windows.

Также вы можете добавить принтер Windows из командной строки из командой строки CUPS:

Сначала нужно получить название драйвера для вашей модели принтера:

$ lpinfo --make-and-model '1536' -m

Скопируйте полное название драйвера и можете подключить SMB принтер:

$ sudo lpadmin -p HP1536mfp -v smb://winusr1:[email protected]/HPM1536 -m postscript-hp:0/ppd/hplip/HP/hp-laserjet_m1530_mfp_series-ps.ppd

Включить принтер:

$ cupsenable HP1536mfp

Вывести список принтеров:

$ lpsatat -v
$ lpstat -p

Список подключенных SMB принтеров содержимся в файле /etc/cups/printers.conf. Обратите внимание, что в файле в открытом виде содержатся пароль Windows пользователя, который вы используете для подключения к принтеру (поэтому не нужно назначать никаких прав этому пользователю на Window машине).

/etc/cups/printers.conf

Jump to: navigation,
search

Situation

You want to print to a printer that is connected to an SMB host or a printer that can be addressed over the network via an SMB host.

This article is for CUPS up to version 2.x under Linux with the traditional filtering system and backends there.

The nowadays driverless printing workflow is rather different.

Background Information

An SMB host is a host that can be addressed by means of the SMB protocol. Normally, this is a Windows host. However, it can also be a Linux host running the «Samba» service. To address the printer by means of the SMB protocol, the SMB host must have a «share» for this printer.

The printer share is identified by unique «names» in the network:

  • Host name of the SMB host (always needed)
  • Name of the shares (always needed)
  • Name of the «workgroup» (not always needed)

Additionally, a user name and a password may be required to access the printer share.

These names, which are required by the SMB protocol, are managed by the NetBIOS name service, which must be clearly distinguished from the usual DNS name service in TCP/IP networks. Although the SMB protocol is based on the TCP/IP protocol, the SMB protocol uses NetBIOS instead of DNS as name service. The NetBIOS host name can be different from the DNS host name, but usually the NetBIOS host name and the DNS host name are identical. However, the DNS domain does not make any sense in the NetBIOS name space. Accordingly, the fully qualified DNS host name consisting of the DNS host name and DNS domain does not make any sense in the NetBIOS name space.

When a printer is addressed by a Linux host by means of the SMB protocol, this is merely for data transfer. The SMB host does not convert the print data from the applications (e.g., PostScript) to printer-specific data. Therefore, the filtering must take place on the Linux host, which requires a complete print system on the Linux host. A queue with filtering must be set up on the Linux host. After the data is filtered, the queue sends the printer-specific data to the SMB share. The SMB share receives the printer-specific data and forwards it to the printer associated with the share.

Procedure

Required Packages

  • The package «samba-client» is needed for sending data (printer data) to an SMB share.
  • Additionally, a complete print system (CUPS plus printer drivers) is needed.

Determining the NetBIOS Names

The command «nmbstatus» lists the workgroups available in the network and the respective NetBIOS host names, for example:

user@host> nmbstatus
Found 123 hosts. Collecting additional information. Please wait.
...
WORKGROUP    TUX-NET
MEMBERS      GEEKO     TUX
...

Determining the Available Shares

The command «smbclient -L NetBIOS-hostname -N» lists available shares on the SMB host with the specified NetBIOS host names, for example:

 user@host> smbclient -L GEEKO -N
 ...
 Sharename      Type      Comment
 ---------      ----      -------
 LPT1           Printer
 ...
 

If necessary, add «-U username%password» to list shares that require a user name and a password for access:

smbclient -L GEEKO -U USER%PASSWORD -N

Testing the Printer

The following command sends one carriage-return character «\r» to the printer via the SMB share. Nothing is printed, but the printer may eject an empty page.

echo -en "\r" | smbclient "//NetBIOS-hostname/share" -c "print -" -N

Insert the respective NetBIOS host name and the share. If necessary, a workgroup and a user name and password can be added to the smbclient command:

smbclient "//NetBIOS-hostname/share" "password" -c "print -" -N -U "username" -W "workgroup"

If the printer is able to print ASCII text directly (without any additional printer driver software), the echo command can be replaced with the command

echo -en "\rHello\r\f"

to print the word «Hello», see SDB:Installing a Printer.

The entire command sequence could appear as follows:

echo -en "\rHello\r\f" | smbclient "//NetBIOS-hostname/share" "password" -c "print -" -N -U "username" -W "workgroup"

Insert the correct NetBIOS host name and share. If necessary, insert the password, user name, and workgroup.

The Correct DeviceURI for CUPS

In CUPS, the DeviceURI in /etc/cups/printers.conf determines how the data should be sent to the printer (or to the SMB share). The DeviceURI must be as specified in «man smbspool»:

smb://server/printer
smb://workgroup/server/printer
smb://username:password@server/printer
smb://username:password@workgroup/server/printer

«server» refers to the NetBIOS host name and «printer» refers to the share. The values for «server» and «printer» (and for «username», «password», and «workgroup», if necessary) must correspond to those used in the above command for the NetBIOS host name and share (and for the password, user name, and workgroup, if necessary).

Contemporary Version

See Swerdna’s contemporary version:
Printer Sharing: openSUSE 10 and 11 Samba Print Server for Linux & Windows Clients

Further Information

Portal:Printing

Доброго времени, гости и читатели блога! Сегодня продолжу рассматривать возможности пакета SAMBA. Перед прочтением данного материала я бы посоветовал ознакомиться со статьями основы SAMBA и CUPS. Итак, из прошлых статей мы знаем как установить пакет samba. После установки, файлы пакета могут располагаться в следующих каталогах:

  • Демоны и утилиты помещаются в каталог: /usr/sbin
  • Файлы настройки в: /etc/samba/
  • Файлы журналов в: /var/log/samba/
  • Некоторые управляющие файлы помещаются в: /var/lib/samba

конечно, возможны некоторые отклонения, например в старых версиях SAMBA настройки хранятся в /etc, а логи в /var/log, при сборке из исходников, samba устанавливается в /usr/local/samba. Т.о. можно убедиться, что SAMBA у нас установлена.

Настройка SAMBA

Настройка SAMBA заключается в редактировании конфигурационного файла /etc/samba/smb.conf. Структура конфига самба схожа с форматом файлов .ini в Windows и представляет собой записи вида:

[stanza0]
   key0=value0
   key1=value1
[stanza1]
   key0=value0
   key1=value1

То есть параметры, они же ключи (key0, key1 и т.д.) собраны в группы, которые называют стансами или строфами (stanza0, stanza1 и т.д.), название которых заключены в фигурные скобки. Каждый каталог или принтер, предоставляемый в общий доступ в Windows называется разделяемым ресурсом (share) или сервисом (service), или в простой терминологии – шАра Каждый ресурс можно представить в Linux отдельным разделом строфой с особым именем и набором параметров. SAMBA понимает громадное количество параметров, с которыми можно ознакомиться тут man smb.conf. Я опишу основные. Существует так же специальный раздел [global], хранящий параметры по умолчанию ко всем сервисам и к серверу в целом. Для начала, я бы посоветовал скопировать оригинальный файл (т.к. в нем большое количество комментариев, с которыми на досуге можно ознакомиться) и создать (например, с помощью редактора vi) на его месте новый, со следующими параметрами:

samba-server:~# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
samba-server:~# cat /etc/samba/smb.conf
[global]
 workgroup = WORKGROUP
 netbios name = SAMBA
 printing = CUPS
 wins support = yes
[homes]
 browsable = no
 read only = no
[printers]
 printable = yes
 printing = CUPS
 path = /var/spool/samba
[data]
 path = /export/data
 read only = no
 map archive = no

Давайте разберем параметры и разделы по порядку:

[global]

Как уже говорилось – содержит параметры, настраивающие пакет SAMBA в целом. Параметр workgroup определяет имя рабочей группы, к которой принадлежит сервер samba. Соответственно, если есть необходимость – нужно переименовать группу на подходящую Вам. Данный параметр необязательный, если его не указывать, то сервер будет принадлежать группе WORKGROUP. Далее, параметр netbios name, который указывает на имя сервера, которое будет отображаться в сетевом окружении Windows. Данный параметр так же необязательный, если его не указывать, то сервер будет отображаться под именем локального хоста (которое можно узнать командой echo $HOSTNAME). Тут необходимо сделать акцент на том, что указывать значение localhost в данном параметре неприемлемо, т.к. данное имя на машинах Wondows всегда будет разрешаться в адрес 127.0.0.1. Так же, в данном станзе можно указать параметр encrypt passwords, который указывает SAMBA шифровать пароли. Это необходимо для клиентов с ОС версией выше windows 98. Если используется версия SAMBA выше 3.0, то данный параметр указывать не обязательно, т.к. он используется по умолчанию. Параметр wins support требует от samba работать в качестве WINS сервера, это не обязательно, но способствует более эффективной работе, о чем я говорил в прошлой статье о SAMBA. Если Ваш Samba сервер использует несколько сетевых интерфейсов, то можно явно указать, на каком из интерфейсов слушать подключения с помощью параметра: interfaces = 192.168.1.1/24.

[homes]

Раздел [homes] определяет виртуальный сервис, указывая SAMBA автоматически расшаривать домашний каталог пользователя. То есть, при подключении к серверу SAMBA производится поиск имени пользователя в файле /etc/passwd и если в локальной системе есть учетная запись пользователя и она имеет домашний каталог, то данный каталог раcшаривается для подключенного пользователя. Параметр read only = no указывает предоставлять домашние каталоги в режиме чтения-записи. Параметр browsable=no указывает не отображать каталог homes в списке расшаренных ресурсов (но домашний каталог подключенного пользователя будет виден пользователю). Данное разрешение учитывает права доступа в Linux, то есть если файл в расшаренной папке с правами только на чтение, то он не станет доступным на запись. Иначе сказав: сервер не предоставит доступа больше чем UNIX система. В данной директории так же полезно указать параметр path = /path/to/homedir/%S, если вы хотите разделить системные домашние папки от расшариваемых.

[printers]

Раздел [printers], в  SAMBA, хранит настройки печати, то есть SAMBA получает указание сделать принтеры, подключенные к системе Linux, доступными клиентам сети. Точнее будет сказать, что данный раздел определяет доступ ко всем принтерам, указанным в файле /etc/printcap. Разделы, они же строфы, которые определяют совместно используемый принтер, включая раздел [printers] должен содержать строку printable = yes. Для доступа к принтерам, необходимо прописать в файле /etc/printcap настройки доступа к принтеру. Параметр printing = CUPS указывает использовать систему печати CUPS (возможно так же указать более старые системы печати, такие как BSD и LPRNG). Для того чтобы использовать свой файл printcap, необходимо его создать и указать в виде параметра printcap = /path/to/printcap. Параметр path = /var/spool/samba указывает, где будет размещен спулер (каталог временного хранилища очереди печати). Для данного каталога необходим установленный StickyBit.

[data]

Данный раздел приведен в качестве примера, как открыть совместный доступ к каталогу. Следуя данному примеру можно расшарить сколько угодно каталогов, указав для каждого свое имя раздела и значение path. Название раздела используется в качестве имени разделяемого ресурса и отображается клиентам Windows, как папка с таким именем. Параметр, отвечающий за функциональность, описанную ниже – map archive – установлен в no.

SAMBA не всегда выполняет задачу – заставить файловую систему UNIX выглядеть как файловая система Windows для клиентов Windows. Одно из различий между файловыми системами Windows и UNIX в том, что в Windows существует атрибут archive, с помощью которого программы резервного копирования определяют, был ли файл модифицирован с момента последнего копирования. В UNIX прямого аналога данного атрибута нет. SAMBA моделирует данный атрибут архивации с помощью бита исполнения для владельца файла UNIX. Данный костыль позволяет программам резервного копирования Windows корректно производить инкрементальное резервное копирование с ресурсов SAMBA. Но есть побочный эффект – файлы с данным атрибутом выглядят в Linux как исполняемые. В конфиге SAMBA в странсе [data] параметр, отвечающий за данную функцию называется map archive.

Хочу отметить кое-какие характеристики при разборе файла smb.conf:

  • Имена разделов и параметров не чувствительны к регистру.
  • Только первый символ равенства значимый.
  • Пробелы до и после первого символа равенства игнорируются.
  • Начальные, концевые и внутренние пробелы некорректны в названиях секций и именах параметров.
  • Начальные и концевые пробелы в значении параметров игнорируются.
  • Внутренний пробел в значении параметра сохраняется дословно.
  • Все строки начинающиеся с символа “;” с запятой или “#” игнорируются как строки содержащие только пробел (комментируются).
  • Все строки оканчивающиеся символом «\» продолжаются на следующей строке в стиле UNIX.
  • Значения после символа равенства в параметрах содержат строку (без кавычек) или логическое значение, как то да/нет, 0/1 или истина/ложь.
  • Регистр не имеет значения в логических значениях, но сохраняется в строковых значениях.

После внесения изменений в конфигурационный файл, необходимо проверить его на корректность. Для этого есть команда testparm. Данная программа проверяет наличие ошибок и несовместимостей в конфигурационном файле SAMBA. Очень хорошая практика – документировать конфигурационные файлы. Но данная практика вступает в противоречие со способом, которым работает самба. Конфигурационный файл очень часто перечитывается демоном smbd, т.о. чем больше строк в файле и чем больше его объем, тем больше это сказывается на производительности системы. Для решения данной проблемы необходимо создать “редактируемый” конфиг, в котором все описано как нужно и из редактируемого файла создать рабочий с помощью команды:

samba-server: ~# testparam -s /etc/samba/smb.conf.edit > /etc/samba/smb.conf

Из редактируемого файла будут удалены все комментарии и будут находится только те параметры, которые отличаются от значения по умолчанию. Так же, стоит отметить, что из файла будут удалены все макросы, которые необходимо будет восстановить вручную. Например, строка include=/etc/samba/%m.conf превратиться в строку include=/etc/samba/.conf.

После запуска проверки параметров командой testparm возможно вы увидите дамп конфига, в котором отсутствуют некоторые наши параметры. Это говорит о том, что данные параметры совпадают с параметрами Samba по-умолчанию.

Запуск сервера SAMBA

Основу Samba составляют три демона, два из которых необходимы всегда:

nmbd

Демон nmbd отвечает за регистрацию всех имен и обслуживание запросов их разрешения. Обеспечивает основной механизм, обеспечивающий возможность обзора сети. Обрабатывает все протоколы на базе UDP. Демон nmbd должен запускаться первым.

smbd

Демон smbd обслуживает все соединения на базе протоколов TCP/IP к сервисам доступа к файлам и к принтерам. Кроме этого, демон заведует процессом локальной аутентификации. Должен запускаться сразу после nmbd.

winbindd

Демон winbindd должен запускаться, когда сервер Samba выступает в роли члена домена Win NT4 или Active Directory. Запуск так же необходим, когда Samba вступает в доверительные отношения с другим доменом. Демон winbindd проверяет файл smb.conf на наличие параметров idmap id и idmap gid, которые затем будут использоваться для отображения идентификаторов системы безопасности Windows (SID).  Указываемый в этих параметрах диапазон не должен находится в противоречии с уже используемыми в системе идентификаторами (начало значений пользовательских ID указывается в файле /etc/login.defs). Если указанные параметры не заданы, то демон winbindd не будет выполнять отображение Windows SID, а аутентификация будет выполняться только на уровне аутентификации пользователей.

Запуск данных демонов возможен как в standealone режиме, так и с помощью супердемона xinetd. В первом случае службы запущены постоянно и прослушивают сетевой интерфейс, во втором, службы запускаются с помощью демона inetd/xinetd и отвечают на запросы только при поступлении запроса от клиента. Для запуска Samba с помощью  супердемона необходимо добавить описание запуска в конфигурационный файл /etc/inetd.conf для inetd или /etc/xinetd.conf для xinetd. Супердемону xinetd обязательно посвящу отдельную тему и на сегодня с xinetd остановим обсуждение.

Запуск демонов Samba

Об уровнях выполнения, можно почитать тут. Данный демон должен быть разрешен для запуска на необходимых уровнях выполнения ОС (команда в RedHat-подобных дистрибутивах – /sbin/chkconfig samba on, в Debian – /usr/sbin/update-rc.d samba defaults). Хотя я и не делал акцент на сборку Samba из исходников, но описание запуска все же затрону для общего понимания. Итак, после сборки Samba, в двоичном пакете необходимо отыскать сценарий, который будет запускать и останавливать демоны в необходимом порядке. При этом необходимо проверить сценарий на корректность имен каталогов, где лежит исполняемый файл демона. Сценарий необходимо сделать исполняемым с помощью команды chmod +x,  положить в каталог /etc/init.d/ и создать соответствующие ссылки на скрипт в каталогах уровней запуска Linux (/etc/rc*.d), в которых необходим запуск демона и соответственно – остановка.

Запуск демона из bash вручную производится командой:

samba-server: ~# /etc/init.d/samba start

соответственно, для остановки заменить start на stop, для перезапуска restart.

Проверка Samba

После установки и настройки сервера, естественно, необходимо проверить работоспособность сервера. Для этого необходимо воспользоваться утилитой smbclient, чтобы получить список разделяемых ресурсов:

samba-server:~# smbclient -L localhost -U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]

 Sharename       Type      Comment
 ---------       ----      -------
 data            Disk
 IPC$            IPC       IPC Service (Samba 3.5.6)
 it_216          Printer   Printer
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.5.6]

 Server               Comment
 ---------            -------
 HOST
 SAMBA                Samba 3.5.6

 Workgroup            Master
 ---------            -------
 WORKGROUP            SAMBA

Полученные результаты показывают, что сервер SAMBA допускает возможность анонимного подключения. В данном случае подключившийся пользователь получает права доступа гостевой учетной записи, которая обычно соответствует учетной записи пользователя nobody в файле /etc/passwd. Если на данном шаге получить информацию не удалось, то это означает, что трафик Samba блокируется фаерволом, либо гостевая учетка не была найдена в файле /etc/passwd.

Так же, в диагностике отлично помогает утилита smbstatus, которая отображает текущих подключенных клиентов.

Добавление пользователей

В нашей конфигурации клиенты должны быть аутентифицированы Samba, чтобы получить доступ к разделяемым ресурсам. От клиента требуется указать имя и пароль, которые имеются на хосте Linux, а так же, если в smb.conf есть раздел [homes], то у пользователя должен быть домашний каталог. Об управлении пользователями в Linux можно почитать тут. Обычно, добавление пользователей в Linux производится командой:

samba-server: ~# useradd -m username

Кроме того, у Samba есть свой файл паролей /etc/samba/smbpasswd, хранящий Microsoft Windows-совместимые зашифрованные пароли. Для каждого пользователя необходимо выполнить команду smbpasswd, чтобы добавить учетную запись Samba для этого пользователя. При этом, имя и пароль должны соответствовать тем, которые имеются у учетных записей Linux:

samba-server:~# smbpasswd -a username
New SMB password:
Retype new SMB password:

Создание простейшего файлового сервера и сервера печати с полным доступом всем без авторизации (абсолютная файлопомойка)

Итак, давайте рассмотрим простейший пример организации файловой помойки, когда нет необходимости запрашивать имя пользователя и пароль для доступа к серверу. Давайте предположим, что есть какой-то каталог, например /tmp/obmen, а так же принтеры, подключенные к локальной системе, к которым необходим общий доступ, при этом используется система печати CUPS.

Для начала, необходимо понимание, как организовать гостевой доступ к серверу samba. В разделе глобальных параметров [global] есть такой параметр как security, который отвечает за порядок доступа к расшаренным ресурсам. Данный параметр определяет режим безопасности для доступа к серверу и может принимать следующие значения:

USER

Значение USER используется по-умолчанию (в версиях Samba от 3.0 и выше), даже если параметр не задан в smb.conf. При этом параметре, клиент должен сначала произвести вход, с существующим именем пользователя и паролем Linux.

SHARE

Значение SHARE в старых версиях Samba использовалось по-умолчанию. При подключении к ресурсу с параметром security = SHARE клиентам не нужно регистрироваться с использованием действительного имени пользователя и пароля. Вместо этого, клиенты посылают информацию аутентификации (пароли) на конкретный ресурс, в тот момент, когда хотят получить доступ к этому ресурсу. Заметьте, что демон smbd ВСЕГДА использует реального пользователя UNIX, когда обслуживает клиента, даже если установлено security = SHARE. Т.к. в режиме SHARE от пользователя не требуется посыла его имени, smbd использует несколько приемов для определения пользователя UNIX.

Список предполагаемых имен пользователей UNIX и соответствующих им паролей определяется следующим образом:

  • Если установлен параметр guest only, тогда все остальные сценарии пропускаются и используется только имя гостевой учетки (guest account).
  • Если имя пользователя послано вместе с запросом на установление соединения после сопоставления (см. параметр username map), добавляется в список.
  • Если клиент выполнял запрос logon (вызов SessionSetup SMB), тогда имя пользователя, использовавшееся в этом вызове будет добавлено в список.
  • Если параметр guest only не установлен, тогда этот список пользователей обрабатывается с соответствующими паролями. Первый пользователь, пароль которого совпадет с реальным будет использован в качестве действующего пользователя UNIX.
  • Если параметр guest only установлен или не найдено подходящего имени пользователя, тогда, если Samba разрешено “принимать гостей” (usershare allow guests), будет использоваться гостевая учетка, в противном случае доступ будет запрещен.

Существуют так же такие значения параметра security, как SERVER, ADS и DOMAIN, которые используют удаленную аутентификацию. Но в данной статье я не буду затрагивать данные параметры.

Итак, из изложенного становиться понятно, что для гостевого доступа к серверу необходимо использовать параметр security = SHAREЧтобы не вникать в схему работы сопоставления пользователей запрашивающих доступ к ресурсам samba и локальных системных пользователей linux, предлагаю пойти по пути первого шага и задать параметр guest only.

При этом, чтобы система знала, с кем ассоциировать гостевую учетную запись, то есть с какой учетной записью UNIX ассоциировать неизвестного подключенного клиента, необходимо указать параметр guest account, равный одной из системной учетной записи Linux. Естественно, данная учетная запись Linux должна иметь необходимый доступ к разделяемым ресурсам, чтобы не возникло вопросов с удалением/добавлением/изменением файлов. Давайте взглянем на рабочий файл файлопомойки:

samba-server:~# cat /etc/samba/smb.conf
[global]
 netbios name = SAMBA
 security = SHARE
 guest account = dostup
 wins support = Yes
[printers]
 path = /var/spool/samba
 guest only = Yes
 read only = No
 printable = Yes
 browseable = No
[obmennik]
 path = /tmp/obmen
 guest only = Yes
 force user = dostup
 force group = dostup
 read only = No
 create mask = 0777
 directory mask = 0777
 guest only = Yes

Как видно, в нашем конфиге появилось несколько уже известных нам параметров и параметров, о которых мы не говорили… Итак по порядку: параметр guest account задает имя учетной записи Linux, с помощью которой анонимные пользователи будут получать доступ к разделяемым ресурсам. Данный пользователь (в нашем случае – dostup) должен  иметь права на чтение и запись в каталог, который будет указан в разделяемом ресурсе (в нашем примере – раздел [obmennik] и каталог /tmp/obmen). Следующий параметр guest only – разрешает только гостевые соединения к общему ресурсу, то есть для сетевого ресурса нет необходимости указывать пароль. Далее появились 2 параметра – force user и force group, которые определяют владельца и группу Linux, с правами которых в разделяемом ресурсе будут создаваться файлы и каталоги при гостевом доступе. Параметры create mask и directory mask, не трудно догадаться, что это маски прав доступа для создания файлов. (Без данных параметров у меня на Debian 6 и samba присваивались права rwxr–r– на файлы в подкаталогах расшаренного ресурса, в результате чего было невозможно удалить созданные файлы.) Вот собственно и весь конфиг.

Примечание: указывать параметр guest account нет особой необходимости. При установке samba через пакетный менеджер, по умолчанию уже будет задан некий пользователь (скорей всего nobody). Узнать, какой пользователь задан по умолчанию можно командой /usr/bin/testparm -sv /etc/samba/smb.conf | grep acco. При этом, необходимо учитывать права доступа заданного пользователя на файловую систему.

Автоматическая загрузка драйвера принтера

Давайте рассмотрим возможность упрощения своей работы за счет хранения драйверов принтера на сервере и возможность автоматической установки драйвера при подключении принтера. Но давайте сначала немного теории.

Итак, в Linux есть два способа сделать системный принтер доступным для совместного использования клиентами Windows.  Первый – в режиме неформатированных данных (raw mode), второй – интеллектуальный режим (smart mode). Давайте рассмотрим оба способа.

режим неформатированных данных (raw mode)

В raw mode система печати просто передает на принтер полученное задание для печати без какой-либо обработки. Для работы CUPS в режиме неформатированных данных, необходимо указать в конфиге параметр cups option – raw. Если данный параметр отсутствует и CUPS получит задание для печати, которое содержит последовательность фильтров не известное системе печати, то задание может быть удалено так и не увидев бумагу. Чтобы исправить данную ситуацию, необходимо отредактировать файлы /etc/cups/mime.types и /etc/cups/mime.convs и раскомментировать строку application/octet-stream. Данное действие позволит CUPS отправлять на принтер задания с неизвестными последовательностями символов.

Данный режим требует установки корректного драйвера на все клиенты Windows. То есть клиент Windows должен сам выполнить обработку задания печати и подготовить к непосредственной передаче на принтер.

интеллектуальный режим (smart mode)

Для режима smart mode необходимо установить на сервере CUPS локальную систему фильтрации. В данном режиме, сервер будет пытаться интерпретировать тип файла, отправленный на принтер, и затем фильтровать данные, автоматически выбирая преобразование соответствующие принтеру. При работе CUPS в интеллектуальном режиме, на клиенты Windows допускается использовать драйвер CUPS Post Script. Данный режим мы рассматривать не будем.

Итак, режим RAW. Давайте подредактируем конфигурационный файл /etc/samba/smb.conf до следующего вида и рассмотрим его параметры:

samba-server:# cat /etc/samba/smb.conf
[global]
 workgroup = WORKGROUP
 printing = CUPS
 wins support = yes
 netbios name = SAMBA
 security = SHARE
 guest account = dostup
 cups options = raw
 show add printer wizard = yes
 printer admin = root, dostup
[printers]
 comment = Очередь печати SMB
 printable = yes
 path = /var/spool/samba
 guest only = Yes
 guest ok = yes
 read only = No
[print$]
 comment = Драйверы принтера
 path = /var/lib/samba/drivers
 guest only = Yes
 guest ok = yes
 read only = No
 create mask = 0777
 directory mask = 0777
 force user = dostup
 force group = dostup
 write list = root, dostup
[obmennik]
 path = /share/obmen
 guest only = Yes
 guest ok = yes
 read only = No
 create mask = 0777
 directory mask = 0777
 force user = dostup
 force group = dostup

У нас добавились следующие пункты: параметр cups options, который определяет режим raw и раздел [print$], аналогичный общему ресурсу Windows (\\host\print$), в котором хранятся файлы драйверов, параметр printer admin задает пользователей Linux, которым разрешено иметь полный доступ для управления свойствами расшаренных принтеров, а так же параметр write list, задающий список пользователей Linux, имеющих право добавлять драйвер в ресурс [print$]. Для корректной работы ресурса [print$], нам необходимо создать указанный в параметре path каталог со структурой аналогичной Windows, для этого необходимо выполнить следующее:

samba-server:~# mkdir /var/lib/samba/drivers
samba-server:~# cd /var/lib/samba/
samba-server:/var/lib/samba# mkdir -p drivers/{W32ALPHA,W32MIPS,W32PPC}
samba-server:/var/lib/samba# mkdir -p drivers/{W32X86/{2,3},WIN40,COLOR,IA64,x64}
samba-server:/var/lib/samba# chown -R dostup:root drivers
samba-server:/var/lib/samba# chmod -R u+rwx,g+rwx,o+rx-w drivers

Далее, необходимо установить и настроить локальные принтеры в систему печати. Для загрузки драйверов в SAMBA, после установки принтеров, необходимо выполнить следующие шаги (шаги рассматриваются на ОС Windows XP):

  1. Загрузить Windows и залогинется.
  2. В сетевом окружении найти машину, которую мы планируем использовать для общего доступа и как сервер печати. (в нашем случае – samba). При этом, должен отобразиться список общих ресурсов и расшаренных принтеров, а так же специальная папка “Принтеры и факсы“. Если данного каталога нет, то скорее всего удален куст реестра, отвечающий за его отображение. Для восстановления, необходимо скачать файл и из архива импортировать в реестр его параметры.
  3. В данном каталоге будет список принтеров Samba. Из списка выбираем правой кнопкой необходимый нам принтер (тот, для которого хотим организовать загрузку драйверов), нажимаем “Свойства“. При этом появиться предложение на установку драйверов данного принтера – НЕ соглашаемся. Далее появиться сообщение “Сервер для данного принтера не имеет требуемого установленного драйвера принтера сервер печати….” – нажимаем Отмена.
  4. Переходим на вкладку “Дополнительно” и напротив поля “Драйвер” нажимаем “Сменить…“. При этом запуститься “Мастер установки драйверов принтера на “имя_сервера_печати””, нажимаем Далее и отвечаем на вопросы местера. На втором шаге, драйвер желательно устанавливать свежий, скачанный с сайта производителя принтера. После выбора драйвера и нажатия кнопки “Готово” начнется копирование драйвера на сервер-samba!!!
  5. После данной процедуры при установке принтера на клиента Windows, драйвер должен устанавливаться автоматически.

Фух, тяжелая получилась статься и немного размытая. Надеюсь, что будет понятно.

Резюме.

В сегодняшней статье я продолжил первую часть изучения пакета SAMBA. Были рассмотрены примеры работы абсолютной файлопомойки и сервера печати на Linux. А так же, описан процесс настройки сервера печати на SAMBA и CUPS с автоматической загрузкой драйверов. Про самба можно писать тома книг, всех моментов не затронешь, но надеюсь, что полученных знаний будет вполне достаточно для быстрого старта и дальнейшего развития. С радостью отвечу на Ваши комментарии.

Upd 2012.05.08: дополнил раздел с файлопомойкой

С Уважением, Mc.Sim!


Теги: CUPS, Debian, Linux, Microsoft Windows, SAMBA, основы

Person using printer

Krit of Studio OMG/Getty Images

You might have read about my recent spate of distro hopping, where I landed with Ubuntu Budgie as my primary operating system. A few days after installing the OS, I realized I’d forgotten that I always share my Public folder to my internal network, so I can easily share files between machines (without having to email them or bounce them between machines and any given cloud service). 

I quickly realized that Ubuntu Budgie not only didn’t have a simple means of sharing folders to a network, it also didn’t include a GUI method for sharing printers. Given my wife is always printing out knitting patterns, return labels, and other bits of information (and the only printer in the house is attached to my desktop), I had to get that printer shared before I was inundated with things to print for her.

Also: How to choose the right Linux desktop distribution for you

Fortunately, this isn’t my first rodeo with printer sharing in Linux, so it only took me a couple of minutes to get that up and running. If you have a similar need, let me show you how easy it is to share a printer to your LAN with CUPS (Common Unix Printer Service) and Samba, which provides file and print services between clients across various operating systems.

One thing to keep in mind as you do this — printers can be very finicky, so not every setup works with every piece of hardware. Just ask any IT admin for their opinion on printers and you’ll get an earful.

How to share a printer to your LAN from Linux

What you’ll need: The only things you’ll need for this process are a running instance of Linux, a printer already attached (and working), and a user with sudo privileges. 

Also: 8 things you can do with Linux that you can’t do with MacOS or Windows

I’ll demonstrate on Ubuntu Budgie, which is based on Ubuntu. If you use a different distribution, the only thing you should need to change is the command for installing Samba. That’s it. Let’s get to work.

In case Samba isn’t already installed, you can do so by opening a terminal window and issuing the command:

Show more

sudo apt-get install samba -y

After the installation, you’ll want to make sure Samba is set to start at boot, which can be done with the command:

Show more

sudo systemctl enable --now smb

Next, we’ll configure Samba. Open the smb.conf file with the command:

Show more

sudo nano /etc/samba/smb.conf

First, look for the line that starts printing = and change it to:

Next, locate the [printers] section and make sure it looks like this:

[printers]
   comment = All Printers
   browseable = yes
   path = /var/spool/samba
   printable = yes
   guest ok = yes
   read only = yes
   create mask = 0700

Save and close the file by hitting the Ctrl+x keyboard shortcut.

It’s now time to configure CUPS. Open the config file with the command:

Show more

sudo nano /etc/cups/cupsd.conf

The first line to identify will look like this:

Change localhost to the IP address of the machine hosting the printer (which you can find by running the command ip a).

Also: The most important reason you should be using Linux at home

Next, you need to set Browsing to yes. Look for the line:

# Show shared printers on the local network.

Make sure the following is directly below it:

In the same file, look for the section that starts with:

That section should look something like this (making sure to change the IP address to that of your network):

<Location />
  Order allow,deny
  Allow localhost
  Allow 192.168.1.*
</Location>

Save and close the file.

Since we’ve changed the Samba configuration file, we need to restart the service with the command:

Show more

sudo systemctl restart smb

Finally, we need to restart CUPS with the command:

Show more

sudo systemctl restart cups

At this point, the printer attached to your Linux machine should appear on your network. One thing you might have to do is download and install the printer drivers to the machine you plan to print from. 

Also: Thinking about switching to Linux? 6 things you need to know

This action will depend on the printer you use and whether support for that printer is baked into the operating system you intend to print from. If you go to print from the shared printer and find your OS can see the printer but not print to it, download and install the printer driver and you should be good to go. 

Linux

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как включить блютуз на ноутбуке асер windows 10
  • Как заблокировать кнопку windows на клавиатуре zet gaming
  • Как зайти в мой компьютер в windows 10 горячие клавиши
  • Showkeyplus windows 7 32 bit
  • Epson perfection 1270 driver windows 10