Linux - чудова операційна система, але від Windows ми не куди не подінемось і він від нас теж. Windows буде оточувати нас завжди - будь то домашня, корпоративна мережаабо інтернет-кафе. Нам постійно доведеться обмінюватися документами з Windows-комп'ютерами - адже далеко не всі користувачі вважають за краще працювати в Linux. Маючи у своєму розпорядженні сервер на Linux , у будь-якому випадку виникне необхідність взаємодії з Windows-комп'ютерами, тому й йтиметься про підключення Linux до мережі Microsoft.

Установка Samba

Для встановлення Samba нам потрібно встановити пакети samba та samba-client. Бажано встановити пакет smbfs. Крім того, система поставить на оновлення пакет samba-common, який, можливо, вже встановлений у системі. Усі мої маніпуляції будуть проводитись на Ubuntu 10.04, основні відмінності інших дистрибутивів – це спосіб установки. Для Ubuntu через консоль, таким чином:

$ sudo apt — get install samba

Або використовуючи менеджер пакетів Synaptic, Що я і зробив, такий варіант виявився зручнішим для мене, оскільки можна було вибрати зі списку ті пакети, які мені потрібні, це були:

    samba

    smbclient

    samba-common

Якщо ви колись використовували інший дистрибутив Linux, то, напевно, знайомі з програмою LinNeighborhood. Це графічна програма, яка дає змогу переглядати ресурси Windows-мережі. У Ubuntu в ній немає потреби. По перше, штатні засоби GNOME дозволяють переглядати Windows-мережі. А по-друге, заради інтересу було встановлено програму LinNeighborhood з одного з репозиторіїв Ubuntu. З'ясувалося, що ця програма, знайдена Synaptic, взагалі не придатна для використання (проблеми з локалізацією). Ну і добре, сенс розбиратися, якщо є відмінні стандартні засоби, які вже працюють.

Базове налаштування Samba

На цьому етапі вважатимемо, що утиліта встановлена. Основний конфігураційний файл Samba – /etc/samba/smb.conf. Його необхідно відкрити та змінити кілька параметрів. Перший це workgroup - він задає ім'я (на Ваш вибір) робочої групи або домену NT:

WORKGROUP = MyHomeGroup

Можна також встановити параметр comment - це опис вашого комп'ютера:

comment = My Linux computer

Встановіть параметр security. Якщо мережа клієнт/сервер, потрібно вибрати параметр server, а якщооднорангова мережу (тобто мережу без виділеного сервера), потрібно вибрати user чи share:

security = share

Ім'я гостьового облікового запису встановіть так:

guest account = guest

Також потрібно налаштувати кодування:

client code page = 866

character set = utf8

Для того, щоб Samba працював швидше, встановіть такі опції:

socket options = TCP_NO DELAY SO_RCVBUF=8192 SO_SNDBUF=8192

dns proxy = no

Параметр interfaces вказує інтерфейси, у яких має працювати сервіс Samba. Необхідно вказати ті інтерфейси, які пов'язують нашу машину з Windows-мережами:

interfaces = 192.168.0.22/24

Налаштування загальних ресурсів

Тепер залишилося налаштувати ресурси, які ми хочемо надати у спільне користування, це секція [ public].

# загальний каталог

comment = Public Directory

# шлях

path = /var/samba

# не тільки читання

read only = no

# дозволити запис

writable = yes

# дозволити гостьовий доступ

guest ok = yes

# дозволити перегляд вмісту каталогу

browseable = yes

У цьому випадку загальним ресурсом нашого комп'ютера буде каталог /var/samba (його потрібно створити, оскільки за умовчанням у системі немає такого каталогу). В нього інші користувачі зможуть записувати свої файли (read only=no, writeable=yes), природно, вони зможуть їх читати (browseable=yes). Перевірка імені користувача та пароля для доступу до ресурсу не потрібна (guest ok=yes) – використовується так званий гостьовий доступ. Коментар "Public Directory" побачать інші користувачі Windows-мережі під час перегляду ресурсів нашого комп'ютера.

Якщо є необхідність надати спільний доступ («розшарити») до домашніх каталогів користувачів, то йдемо до секції. Розкоментуємо всі рядки, закоментовані за допомогою крапки з комою до рядка; Т. е. повинно вийти наступне:

comment = Home Directories

browseable = no

valid users = %S

writable = no

create mask = 0600

directory mask = 0700

Зараз каталоги користувача не будуть видно в списку загальних ресурсів, звернутися до них можна за адресою \\сервер\ім'я_користувача . Наприклад, \serverpetya. Якщо потрібно, щоб ресурси можна було переглянути, тоді встановлюємо значення yes для параметра browseable:

browseable = yes

Після всіх змін зберігаємо файл конфігурації та запускаємо (або перезапускаємо – restart) Samba:

$ sudo /etc/init.d/samba start

Перегляд ресурсів Windows-мережі

Переглянути ресурси мережі Windows можна за допомогою програми smbclient, але вона працює в текстовому режимі, тому не зовсім зручна у використанні. Набагато зручніше використовувати браузер файлів для перегляду ресурсів мережі. Зробити це можна за допомогою меню Перехід З'єднатися із сервером…

Секрети оптимізації Samba

Тепер поговоримо про те, як змусити Samba працювати трохи швидше. Якщо ви відкриєте файл конфігурації smb.conf, знайдете в ньому параметр wide links. Ніколи не встановлюйте його в no ! Так ми значно знизимо продуктивність Samba. Навпаки, встановити його потрібно в yes (якщо раніше параметр wide links був відключений), що істотно підвищить продуктивність.

Параметр wide links визначає, як Samba слідуватиме за символічними посиланнями. Якщо wide links=no, Samba не слідуватиме за символічними посиланнями поза експортованою областю. Спочатку Samba слідує за символічним посиланням, а потім виконує так званий directory path lookup (системний виклик, що визначає, де завершилося посилання). Ця операція передбачає на 6 системних викликів більше, ніж у випадку, якщо wide links = yes. Враховуючи, що подібних операцій робиться дуже багато, вимкнення wide links знижує продуктивність Samba приблизно на 30%.

Samba – це програма, яка дозволяє комп'ютерам UNIX/Linux імітувати машини Windows. За допомогою Samba комп'ютери можуть обмінюватися файлами або керувати завданнями друку як файл-сервери або сервери друку під Windows. Подібно до операційної системи UNIX/Linux, на якій вона працює, Samba являє собою розроблене безліччю програмістів ПЗ з відкритим вихідним кодом.

Протокол SMB використовується Microsoft Windows 2000, NT та 95/98 для організації доступу до дисків та принтерів. Використовуючи набір утиліт Samba від Andrew Tridgell ( [email protected]), UNIX-машини (включаючи Linux) можуть організовувати доступ до дисків та принтерів для Windows-машин. Утиліти smbfs написані Paal-Kr. Engstad ( [email protected]) та Volker Lendecke ( [email protected]), дозволяють машинам з UNIX монтувати SMB-ресурси, доступні на машинах з Windows або Samba.

За допомогою Samba можна реалізувати такі найпоширеніші:

  1. Надавати доступ до дисків Linux Windows-машин.
  2. Отримувати доступ до дисків Windowsдля машин під Linux
  3. Надавати доступ до принтерів Linux для Windows-машин.
  4. Отримувати доступ до принтерів Windows із Linux-систем.

Інсталяція та тестування Samba

Інсталяцію, як відомо, слід розпочинати з докладного вивчення документації. Щоправда, більшість системних адміністраторів нехтують цим правилом, керуючись іншим: «Якщо нічого не допомагає, почитайте документацію». Загалом радимо почати інсталяцію Samba з простої команди: $ man samba (рис. 1).

А також читання документації, доступної на сайті http://www.samba.org/. Слід зазначити, що для використання Samba ваша машина повинна бути в одиночному Ethernet-сегменті локальної мережі, використовуючи протокол TCP/IP. Samba не буде працювати при використанні інших мережевих протоколів. Це, в принципі, легко, оскільки Linux та Windows 95/98/NT постачаються з підтримкою TCP/IP. Однак, якщо ви використовуєте машини з Windows 3.x, вам необхідно додати підтримку TCP/IP.

Де взяти

Щоб отримати вихідні тексти останньої версії Samba, зв'яжіться з сайтом http://www.samba.org/ та оберіть найближчий до вас сервер-дзеркало: ftp://ftp.samba.org/. Пакет Samba входить до складу дистрибутивів низки UNIX/Linux систем, наприклад Rad Hat або Suse Linux. Уважно вивчіть документацію вашого Linux, і цілком можливо, що вам буде достатньо тільки вставити CD і інсталювати пакети Samba. У цьому випадку ви можете продовжувати читати статтю з наступного розділу.

Після отримання цього пакету витягаємо все те, що знаходиться під «грифом» *.tar.gz, наприклад, в директорію /tmp (причому для цього не обов'язково бути root"ом:), тобто:

$tar-zxvf samba-latest.tar.gz

Якщо у вас не виникло жодних проблем при вийманні цього пакета, ви виявите нову директорію, наприклад samba-latest, і в ній вилучені файли. Перейдіть до неї, загляньте у файли «README» та «Manifest» - інструкція з інсталяції знаходиться в останньому файлі і виглядає приблизно так:

$ ./configure $ make $ su # make install

Тепер потрібно звернути увагу на те, де знаходяться файли конфігурації. Більшість дистрибутивів Samba за умовчанням поміщає їх у директорію /etc, а себе - директорію /usr/local/samba.

Налаштування Samba

Основна інформація про конфігурацію Samba міститься у файлі smb.conf. З цим файлом слід звертатися обережно. Якщо ви плануєте якось змінити працюючу версію, обов'язково зробіть копію.

Щоб перший раз запустити сервер, необхідно мати робочу версію файлу smb.conf. Перейдіть до директорії, в якій має бути ваш конфігураційний файл. Найімовірніше це буде /etc або /usr/local/samba/lib. Зробіть копію даного файлунаприклад smb.old, - це можливо за наявності прав root. Тепер, коли у вас є чистий файл, можна ввести найпростішу конфігурацію, тобто набрати наступні рядки:

#Basic Samba configuration file (smb.conf) workgroup = PTO netbios name = GALKA

Нижче ми розберемося, що означають ці рядки у конфігураційному файлі, але спочатку тимчасово відвернемося від нього і перейдемо до демонів SMB.

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

Є два демони SMB: /usr/sbin/smbd та /usr/sbin/nmbd. Ви можете запустити демони Samba з inetd або як автономний процес. Samba буде відповідати трохи швидше, якщо вона запущена як автономний процес.

Іноді буває необхідно перевірити наявність у файлі /etc/services приблизно таких рядків:

netbios-ns 137/tcp nbns netbios-ns 137/udp nbns netbios-dgm 138/tcp nbdgm netbios-dgm 138/udp nbdgm

Переконайтеся, що вони не закоментовані. Залежно від вашого дистрибутива вам, ймовірно, навіть доведеться додати їх до цього файлу. Samba не зможе прив'язатися до відповідних портів, поки ці рядки не будуть у файлі /etc/services.

Для запуску демонів із inetd помістіть наступні рядки у конфігураційний файл inetd, /etc/inetd.conf:

# SAMBA NetBIOS services (для комп'ютерних файлів і 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) або /etc/rc.d (для дистрибутива Suse Linux) та створіть на нього символічні посилання з іменами виду /etc/rc.d/rcX.d/S91smb (запускає сервіси SMB у розрахованому на багато користувачів режимі), /etc/rc.d/rcX.d/K91smb (вбиває сервіси SMB при вимкненні), /etc/rc.d/rc6 .d/K91smb (вбиває сервіси SMB під час перезавантаження), де X - номер завантажувального рівня системи, зазвичай це цифра 2 чи 3.

#! /bin/sh. /etc/rc.config # Визначте основу й натисніть на runlevel link name. base=$(0##*/) link=$(base#*) # Force execution if not called by a runlevel directory. test $link = $base && START_SMB=yes test "$START_SMB" = "yes" || exit 0 # echo return value for success (визначено в /etc/rc.config). return=$rc_done case "$1" in start) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D || return=$rc_failed startproc /usr/sbin/smbd -D || return=$rc_failed echo -e "$return";; startd) echo -n "Starting SMB services:" startproc /usr/sbin/nmbd -D -d 10 || return=$rc_failed startproc /usr/sbin/smbd -D -d 10 || return=$rc_failed echo -e "$return";; stop) echo -n "Shutting down SMB services:" killproc -TERM /usr/sbin/nmbd || return=$rc_failed killproc -TERM /usr/sbin/smbd || return=$rc_failed echo -e "$return";; restart|reload) $0 stop && $0 start || return=$rc_failed;; status) echo -n "Застосування для служби smb: " checkproc /usr/sbin/nmbd && echo -n "OK " || echo -n "No process" checkproc /usr/sbin/smbd && echo "OK" || echo "No process";; *) echo "Usage: $0 (start|stop|restart|reload|status)" exit 1 esac # Inform тел. test "$return" = "$rc_done" || exit 1 exit 0

Якщо при старті Samba ви отримуєте повідомлення, в якому говориться, що демон не може підключитися до порту 139, то, швидше за все, у вас вже є запущені процеси Samba, які не були завершені. Перегляньте список процесів (використовуючи команду "ps ax | grep mbd") для того, щоб визначити, чи є ще запущені сервіси Samba. Якщо ж демони відмовляються запускатися з якихось інших причин, то найімовірніше цей скрипт не підходить до вашого UNIX/Linux і вам доведеться ще раз покопатися в документації, щось у ньому виправити, а можливо, і переписати.

Основне налаштування smb.conf

Очевидно, що в наведеній вище конфігурації Samba може функціонувати, але практично не може нічого робити. Нижче буде розглянуто більш корисні та складніші приклади. Але спочатку треба розібратися у директивах smb.conf.

Кожен розділ файлу починається із заголовка розділу, такого як , , і т.п.

Тепер переходьте в першу закладку «Конфігурація» (Configuration) і натисніть на кнопці «Доступ до файлів та принтерів» (File and print sharing). У вікні, що з'явиться, необхідно поставити прапорці в полі «Файли цього комп'ютера можна зробити спільними» (I want to be able to give access to my files) і «Принтери цього комп'ютера можна зробити спільними» (I want to be able to allow others to print to my printer(s)).

І нарешті, ми вказуємо Windows, що Samba є сервером WINS і саме він буде browse master". Для цього переходимо у властивості TCP / IP-протоколу (рис. 4). У вікні, що з'явилося, вибираємо "Конфігурація WINS" (WINS Configuration). Ставимо прапорець у полі «Включити розпізнавання WINS» (Enable WINS Resolution) У полі «Основний сервер WINS» (WINS Server Search Order), що з'явилося, прописуємо IP-адресу сервера (Samba) - 192.168.0.1 і натискаємо «Додати» (Add) або просто ... Переходимо на закладку "Додатково" (Advanced) і натискаємо на "Browse Master" у лівому вікні, а в правому встановлюємо значення "Disabled". Ось і все. Тепер залишається лише кілька разів натиснути кнопку "ОК" і перезавантажити Windows.

У Windows NT екрани властивостей мережі трохи різняться (показані малюнки), але головна концепція побудови залишається тієї ж.

Після перезавантаження Windows сміливо натисніть на "Мережеве оточення" (Network Neighborhood) і ви зможете побачити Samba-сервер, а також свою домашню директорію на Linux-сервері. Тепер ви можете просто підключити дані ресурси як мережеві диски та присвоїти їм drive letters.

Трохи ускладнимо конфігурацію: зробимо директорію /home/public доступною для читання всіма, але дозволимо поміщати в неї інформацію лише людям із групи ADMINS. Для цього змінимо запис наступним чином:

Comment = Public Stuff path = /home/public public = yes writable = yes printable = no write list = @ADMINS

Можна навести ще багато різних прикладів налаштувань файлового сервера Samba, але краще, якщо ви заглянете в документацію Samba або довідкові сторінки і розберете їх самостійно.

Доступ до дисків Windows з Linux

Навряд чи користувачі-початківці Linux OS зможуть швидко розібратися з системою доступу до Linux-файлів з-під Windows, і навпаки. Але не все так складно. Доступ до Linux-ресурсів з-під Windows був коротко описаний вище, а доступ до Windows-ресурсів з-під Linux ми зараз розглянемо.

Програма клієнта SMB для UNIX/Linux-машин включена до дистрибутиву Samba. Вона забезпечує ftp-подібний інтерфейс командного рядка. Ви можете використовувати цю утиліту для перенесення файлів між «сервером» під керуванням Windowsта клієнтом під Linux.

Щоб побачити, які ресурси доступні на даній машині, виконайте команду:

/usr/sbin/smbclient -L host

де host – це ім'я машини, яку ви хочете бачити. Ця команда поверне список імен сервісів - тобто імен дисків або принтерів, до яких можна отримати доступ. Доки SMB-сервер не буде налаштований без керування доступом, він буде запитувати у вас пароль. Введіть у відповідь на запит пароль для користувача гість (guest) або ваш персональний пароль на цій машині.

Для використання клієнта виконайте таку команду:

/usr/sbin/smbclient service

де service - ім'я машини та сервісу. Наприклад, якщо ви намагаєтеся звернутися до директорії, яка доступна під ім'ям public на машині, названої galka, ім'я сервісу має звучати як \\galka\public.

Ви отримаєте запрошення smbclient:

Server time is Wen May 22 15:58:44 2001 Timezone is UTC+10.0 Domain= OS= Server= smb: \>

Команди для використання Samba аналогічні командам ftp, але якщо ви не вмієте користуватися ні тим, ні іншим, надрукуйте h, щоб отримати допомогу.

Ви, звичайно, можете використовувати smbclient для тестування, проте дуже скоро вам це набридне. Для роботи вам швидше за все знадобиться пакет smbfs. Smbfs поставляється з двома простими утилітами - smbmount та smbumount. Вони працюють подібно mount та umount для SMB-ресурсів. Наприклад,

Smbmount//computer_name/catalog/Mountpoint -U user_name

У результаті ви отримаєте «підмонтований» ресурс із можливістю звернення щодо нього звичними методами провідника.

Принт-сервер під Linux

Для організації доступу до Linux-принтера з Windows-машин необхідно переконатися, що принтер працює під Linux. Якщо ви можете друкувати під Linux, організація доступу до принтера буде дуже проста.

Додайте налаштування принтера до файлу smb.conf:

Printing = bsd printcap name = /etc/printcap load printers = yes log file = /var/log/samba-log. /lpd/lp browseable = no printable = yes public = yes writable = no create mode = 0700 security = server path = /var/spool/lpd/lp printer name = lp writable = yes public = yes printable = yes print command = lpr -r -h -P %p %s

Переконайтеся, що шлях до принтера (у нашому випадку для ) відповідає буферній директорії, вказаній у файлі /etc/printcap, тобто перевірте наявність рядків:

Printcap name = /etc/printcap load printers = yes

Ці рядки контролюють, чи всі принтери, перелічені в /etc/printcap, повинні бути завантажені за замовчуванням. У цьому випадку не потрібно налаштовувати кожен принтер окремо. Розділ вказує настройки для принтерів, які потрібно визначити явно. Якщо підсистема друку не працює подібним чином (BSD), то вам необхідно налаштувати фальшивий файл printcap (або використовувати "print command", див. нижче). Для отримання додаткової інформаціїпро систему printcap див. Printing-HOWTO.

Доступ до принтеру Windowsз машин, що працюють під Linux

Для доступу до принтера на машині Windows необхідно дотримуватися таких умов:

  1. Вам необхідно мати у файлі /etc/printcap правильні записи, які мають відповідати локальній структурі директорій (для буферної директорії тощо)
  2. У вас має бути скрипт /usr/bin/smbprint. Він постачається разом із вихідними текстами Samba, але не з усіма двійковими дистрибутивами Samba.
  3. Якщо ви хочете перетворити ASCII-файли на PostScript, ви повинні мати програму nenscript або її еквівалент. Програма nenscript - це конвертор PostScript, який зазвичай встановлюється директорією /usr/bin.

Запис у наведеному нижче файлі /etc/printcap зроблено для принтера HP 5MP на сервері Windows NT. Використовуються такі поля файлу /etc/printcap:

Cm – коментар; lp - ім'я пристрою, що відкривається для виведення; sd – директорія спула принтера (на локальній машині); af – файл обліку користування принтером; mx - максимальний розмірфайлу (нуль - без обмежень); if – ім'я вхідного фільтра (скрипта).

Фрагмент файлу /etc/printcap:

# /etc/printcap # # // galka/oreilly via smbprint # lp:\ :cm=HP 5MP Postscript OReilly on galka:\ :lp=/dev/lp1:\ :sd=/var/spool/lpd/lp: \ :af=/var/spool/lpd/lp/acct:\ :mx#0:\ :if=/usr/bin/smbprint:

Переконайтеся, що буферні директорії та директорія, які застосовуються для обліку користування, існують і мають право на запис. Переконайтеся, що рядок «if» містить правильний шлях до скрипту smbprint (наведено нижче) і що записи вказують на правильний вивідний пристрій (спеціальний файл /dev).

#!/bin/sh –x # # Debugging log file, змінити /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 Ви можете повідомити про line `echo translate" if you want automatic # CR/LF translation when printing. echo translate echo "print -" cat) /usr/bin/smbclient "$server" $password -U $user -N -P >> $logfile

Більшість дистрибутивів Linux поставляється з програмою nenscript для перетворення ASCII-документів у PostScript.

Висновок

Ще зовсім недавно можливості Samba обмежувалися лише переліченими вище. Однак можна з упевненістю говорити, що нова версія Samba 2.2 наздоганяє Windows 2000 за функціональними можливостями і містить додаткові вдосконалення. Один із провідних розробників Samba Джеремі Еллісон (Jeremy Allison) називає її «важливим оновленням», яке допоможе системам Samba легше впроваджуватися в мережі Microsoft. ПЗ забезпечує економію не тільки тому, що не потрібно платити за серверну ОС, а й тому, що не доводиться оплачувати «клієнтські» ліцензії за всі комп'ютери, які використовують сервер.

Про нові можливості Samba 2.2. читайте у нашій статті «Samba 2.2 - що нового » .

Комп'ютерПрес 10"2001

Samba- програма, яка дозволяє звертатися до мережних дисків на різних операційні системиза протоколом SMB/CIFS. Має клієнтську та серверну частини. Є вільним програмним забезпеченням, випущеним під ліцензією GPL .

Sambaпрацює на більшості Unix-подібних систем, таких як GNU/Linux, POSIX-сумісних Solaris та Mac OS X Server, на різних варіантах BSD, у OS/2, Windows. Sambaвключена практично у всі дистрибутиви GNU/Linux, у тому числі, звичайно, і в Ubuntu.

Встановлення

Щоб зробити спільну папкув Ubuntu Desktop достатньо натиснути правою кнопкоюмиші на папці та вибрати пункт меню "Опублікувати папку". Жодних конфігураційних файлів при цьому правити не треба. Все описане нижче стосується тільки ручне налаштуваннянаприклад, у разі створення файлового сервера.

Для встановлення достатньо відкрити термінал та ввести:

Sudo apt-get install samba

Програма буде автоматично завантажена та встановлена.

Налаштування

За допомогою терміналу зробимо резервну копіюпочаткового конфігураційного файлу:

Sudo cp /etc/samba/smb.conf(,.bak)

Тепер можна відредагувати файл налаштувань /etc/samba/smb.conf, для цього відкрийте його в будь-якому текстовому редакторі з правами користувача. Наприклад, так:

Sudo nano /etc/samba/smb.conf

Написане далі взагалі лише один конкретний сценарій використання Samba, і у величезній кількості випадків все налаштовується абсолютно не так. Статтю необхідно виправити, наголосивши на можливостях Samba, а не тільки на застосуванні цієї програми як файлосховища з локальною авторизацією. Приклад з файлосховищем краще винести в окрему докладну статтю.

Приклад налаштування Samba як автономний файловий сервер з авторизацією:

; Глобальні налаштування сервера; General server settings; Ім'я комп'ютера, яке відображатиметься у мережному оточенні netbios name = main-server server string = ; Робоча група клієнтів workgroup = WORKGROUP announce version = 5.0 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192 passdb backend = tdbsam security = user Файл для альясів імен користувачів username map = /etc/samba/smbusers name resolve order = hosts wins bcast ; wins support встановлюється в yes, якщо ваш nmbd(8) Самба є WINS сервером. Не встановлюйте цей параметр у yes якщо у вас немає кількох підмереж і ви не хочете, щоб ваш nmbd працював як WINS сервер. Ніколи не встановлюйте цей параметр у yes більш ніж на одній машині в межах однієї підмережі. wins support = no; Підтримка принтерів printing = CUPS printcap name = CUPS; Логи log file = /var/log/samba/log.%m syslog = 0 syslog only = no; Налаштування прив'язки до інтерфейсів, на яких слухати, якщо не вказано слухає на всі інтерфейси; interfaces = lo, eth0; bind interfaces only = true; ; ; path = /var/lib/samba/printers; browseable = yes; guest ok = yes; read only = yes; write list = root; create mask = 0664; directory mask = 0775; ; ; path = / tmp; printable = yes; guest ok = yes; browseable = no; ; ;path = /media/cdrom ;browseable = yes ;read only = yes ;guest ok = yes ; Куля жорсткого диска; Ім'я кулі, видно у клієнтів; Шлях до диска path = /media/sda1 ; Чи можна переглядати browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755; Прив'язка до певного імені користувача або групи, імена через пропуск; force user = user1 user2 ; force group = group1 group2; Ще один жорсткий диск, за аналогією з тим що вище path = /media/sde1 browseable = yes read only = no guest ok = no create mask = 0644 directory mask = 0755

Тепер слід розібратися з користувачами.

Samba використовує користувачів які вже є в системі, візьмемо для прикладу ім'я user, припустимо, що він вже є в системі, треба внести його в базу даних SMB і призначити пароль для доступу до загальних ресурсів, зробимо це командою:

Smbpasswd -a user

Вам буде запропоновано ввести пароль, користувач буде доданий до бази, тепер необхідно включити цього користувача.

Smbpasswd -e user

Далі створимо псевдонім для імені користувача user щоб полегшити собі доступ з Windows машини на якій у нас наприклад користувач з ім'ям Admin, для цього створимо і відредагуємо файл /etc/samba/smbusers:

Sudo touch /etc/samba/smbusers sudo gedit /etc/samba/smbusers

Впишіть у файл кілька рядків

# Unix_name = SMB_name1 SMB_name2 user = Admin

На цьому налаштування закінчено, перезапустіть Samba.

Установити найпростіший GUI для Samba можна командою:

Sudo apt-get install system-config-samba

Запускається він командою:

Sudo system-config-samba

Всі зміни він записує до конфігураційного файлу samba.

Для віддаленого адміністрування Samba як web-інтерфейс для Samba відмінно підійде

Зараз вже досить часто в одній локальній мережі можна зустріти комп'ютери під керуванням Linux та Windows. Причини такого симбіозу можуть бути різними: наприклад, у власників інтернет-кафе не вистачило коштів на придбання ліцензійної ОС для всіх комп'ютерів або системного адміністратора просто залучили позитивні сторони Linux. Популярність операційних систем від Microsoft багато в чому визначаться клієнтським програмним забезпеченням для Windows. Не секрет, що цей сектор програмного забезпечення дуже розвинений. Безліч фірм доклали до цього серйозних зусиль і створили справді хороші, а головне, зручні у використанні програми, які легко може освоїти навіть рядовий користувач. Зате як сервер позиція Windows вжене така однозначна. Сервер під керуванням Unix традиційно відрізняється надійністю, стабільністю в роботі, безпекою та найчастіше меншими вимогами до системним ресурсам. Але в будь-якому випадку, просто підключивши комп'ютери з різними програмними платформами до мережі, ми не отримаємо очікуваного результату. Вся проблема в тому, що ці дві системи використовують різні принципи організації мережевих ресурсів, несумісні між собою.
Так як милості Microsoft чекати не доводиться, і Windows навряд навчиться працювати з мережевою файловою системою Unix (NFS) стандартними засобами, а програм сторонніх виробників, якщо чесно, я не знаю, то найпопулярнішим способом є спроба навчити Unix «прикидатися», ніби він — Windows NT.

Взаємодія в мережі комп'ютерів під керуванням Windows побудована на використанні протоколу SMB (Server Message Block)- Блоки серверних повідомлень. Він забезпечує виконання всіх необхідних у цих випадках завдань з відкриття та закриття, читання та запису, пошуку файлів, створення та видалення каталогів, постановки завдання на друк та видалення його звідти. Всі необхідні для цього дії реалізуються в Unix-подібних операційних системах за допомогою пакету SAMBA. Можливості його умовно можна розділити на дві категорії: надання ресурсів (під якими розуміється доступ до системи принтерів та файлів) для клієнтів Windows та доступ до ресурсів клієнтів. Тобто комп'ютер під управлінням Linux може виступати як у ролі сервера, так і клієнта. Спочатку розглянемо варіант SAMBA-сервера.

Що ж має забезпечити SAMBA для нормальної роботи у мережі Windows-машин? По-перше, контроль доступу, який може бути реалізований або на рівні ресурсів (share level), коли якомусь ресурсу в мережі призначається пароль та відповідні правила використання (наприклад, «тільки для читання»), ім'я користувача не має абсолютно жодного значення; або ж більш досконалу та гнучку організацію лише на рівні користувача, коли кожного користувача створюється обліковий запис, де крім імені та пароля міститься вся необхідна інформація про права доступу до ресурсу. Перш ніж отримати доступ до необхідного ресурсу, кожен користувач проходить автентифікацію, після чого йому надаються права відповідно до облікових записів. По-друге, необхідна емуляція прав доступу, які визначаються файловою системою. Вся справа в тому, що у систем права доступу до файлів і каталогів на диску організовані по-різному. У Unix традиційно існує три категорії користувачів файлів: власник (owner), група (group)і решта (other). Кожному з цих суб'єктів можуть бути надані права на читання (read), запис (write)і виконання (execute). У Windows NT система доступу дещо гнучкіша, доступ надається кільком групам чи користувачам, причому відповідні права доступу визначаються окремо кожному за суб'єкта. Тому повноцінно емулювати засоби SAMBA права доступу, закладені в NTFS, неможливо.

З клієнтами, які працюють під управлінням Windows 9x, справа інакше. Ще з часів дідуся ДОСа, тому що система однокористувацька і про жодних користувачів і тим більше груп і не могла бути мови, для файлової системи FAT визначено всього чотири атрибути. тільки читання (read only), системний (system), архівний (archive) та прихований (hidden). Плюс до всього у Windows, на відміну від Unix, має особливе значення розширення файлу - ті, що призначені для виконання, мають розширення .exe, .com або .bat. При копіюванні файлів з Unix-машин на комп'ютери під керуванням Windows атрибути встановлюються так:

тільки для читання- Читання, запис для власника;

архівний- Виконання для власника;

системний- Виконання для групи;

прихований - виконання для групи.

Мережа Windows-машин може бути організована як робоча група (workgroup), коли комп'ютери незалежні один від одного і на кожному є своя база паролів і логінів зі своєю безпековою політикою, а також як домен NT. Вся база для автентифікації користувачів та комп'ютерів керується головним контролером домену (PDC, Primary Domain Controler), тобто. централізовано. Samba дозволяє обмежувати доступ на всіх цих рівнях і виконує функції головного браузера в контексті робочої групи або контролера домену.

Із загальноорганізаційними питаннями розібралися. Давайте подивимося тепер безпосередньо на реалізацію та налаштування SAMBA-сервера в Linux. Для роботи Samba-сервера необхідно, щоб було запущено два демони: smbd, що забезпечує роботу служби друку та поділу файлів для клієнтів Samba (таких як Windows усіх мастей), та nmbd, що забезпечує роботу служби імен NetBIOS (він може використовуватися для запиту інших демонів служб імен). Для доступу до клієнтів використовується протокол TCP/IP. Як правило, Samba встановлюється разом із дистрибутивом Linux. Як перевірити? Просто дайте команду:

$ whereis samba

і ви повинні отримати щось на зразок цього:

Samba: /usr/sbin/samba /etc/samba /usr/share/man/man7/samba.7.gz

Якщо його не виявиться у стандартній поставці, то ласкаво просимо на ftp://ftp.samba.org/pub/samba/samba-latest.tar.gz або практично на будь-який сервер із програмами для Linux. Пакет простий у встановленні, тому, щоб не займати місця, вважатимемо, що він у вас встановлений. Тепер перевіримо, чи запущений демон:

$ps-aux | grep smbd root 1122 0.0 0.6 4440 380 ? S 16:36 0:00 smbd -D

У мене вже, як бачите, запущено. Якщо у вас немає, а ви хочете, щоб він запускався при завантаженні системи, то в Linux Mandrake, наприклад, відзначте потрібний пункт DrakConfстартові сервісиабо в Red Hat Control-panelServise Configurationзазвичай цього буває достатньо. Або запустіть вручну: ./etc/rc.d/init.d/smb start. Єдиний конфігураційний файл Samba називається smb.conf і зазвичай знаходиться у каталозі /еtc (хоча в AltLinux, наприклад, він лежить у каталозі /etc/samba). Сервіс SAMBA зчитує його кожні 60 секунд, тому зміни, внесені в конфігурацію, набувають чинності без перезавантаження, але не поширюються на вже встановлені з'єднання.

Ось за що я люблю Linux, це за те, що конфігураційні файли є звичайними текстовими (до того ж добре коментованими всередині), і для того, щоб задіяти більшість параметрів, достатньо лише розкоментувати відповідний рядок. Файл smb.conf – не виняток. Він складається з іменованих розділів, що починаються з імені розділу, укладеного в квадратні дужки. Усередині кожного розділу знаходиться ряд параметрів як key=value. Файл конфігурації містить чотири спеціальні розділи: , , та окремі ресурси (shares). Як випливає з назви, розділ містить найбільш загальні характеристики, які будуть застосовуватися скрізь, але які, втім, можна перевизначити в секціях для окремих ресурсів. Деякі параметри цього розділу стосуються і настроювання клієнтської частини Samba.

Значення типових параметрів секції global:

Workgroup = ім'я_групи # назва робочої групи в мережі Windows netbios name = ім'я сервера в мережі server string = коментар, який видно у вікні властивостей перегляду мережі nobody # ім'я, під яким дозволено гостьовий вхід до системи security = user # Рівень доступу. user – на рівні користувача, security = share – автентифікація на основі імені та пароля. При зберіганні бази паролів на іншому SMB-сервері використовується значення security=server та password server=name_server_NT. Якщо сервер є членом домену, використовується значення security = domain, пароль для доступу вказується у файлі, визначеному за допомогою опції smb passwd file = /path/to/file.

Крім того, під час реєстрації можуть використовуватися шифровані (encrypted) та незашифровані (plain-text) паролі. Останні використовують у старих Windows (Windows for Workgroups, Windows 95 (OSR2), всіх версіях Windows NT 3.x, Windows NT 4 (до Service Pack 3)). Для увімкнення варіанта використання шифрованого пароля використовується опція encrypt password = yes. Прошу звернути особливу увагу на цю опцію. У старих дистрибутивах Linux, які створювалися в епоху Windows 95 (і більше старою версією Samba) за замовчуванням шифрування паролів відключено, а samba до версії 2.0даного режиму взагалі не підтримує (до речі, ця опція і подібні до неї — ті, що не стосуються доступу до конкретних ресурсів — використовуються і в клієнті).

Для правильного відображення російських імен файлів необхідні такі опції: client code page = 866 і character set = koi8-r. У дистрибутивах з гарною локалізацією, наприклад, похідних від Mandrake і росіян цей рядок вже є, іноді його досить просто розкоментувати, але в більшості інших його треба дописати самому.

Опція interfaces = 192.168.0.1/24 вказує, у якій мережі (інтерфейсі) має працювати програма, якщо сервер підключений відразу до кількох мереж. При установці параметра bind interfaces only = yes сервер відповідатиме на запити лише з цих мереж.

hosts allow = 192.168.1. 192.168.2. 127. — визначає клієнтів, котрим дозволено доступом до сервісу.

У секції global можливе використання різних змінних для більш гнучкого налаштування сервера. Після встановлення з'єднання замість них підставляються реальні значення. Наприклад, у директиві log file = /var/log/samba/%m.log, %m допомагає визначити окремий лог-файл для кожної клієнтської машини. Ось найбільш уживані змінні, що використовуються в секції global:

%a - архітектура ОС на клієнтській машині (можливі значення Win95, Win NT, UNKNOWN і т.д.);

%m - NetBIOS-ім'я комп'ютера клієнта;

%L - NetBIOS-ім'я сервера SAMBA;

%v - версія SAMBA;

%I - IP-адреса комп'ютера клієнта;

% T - дата і час;

%u - ім'я користувача, що працює із сервісом;

%H — домашня директорія користувача %u.

Також для більш гнучкої установки застосовується директива include, що використовує наведені вище змінні. Наприклад: include = /etc/samba/smb.conf.%m - тепер при запиті з комп'ютера sales за наявності файлу /etc/samba/smb.conf.sales конфігурація буде взята з цього файлу. Якщо окремого файлу якоїсь машини нічого очікувати, то роботи з нею задіюється загальний файл.

Також є цікава можливість створення віртуального сервера . Для цього використовується параметр netbios aliases:

Netbios aliases = sales accounting admin

Тепер наказуємо Самбі, щоб для кожного віртуального сервера вона використовувала свій файл конфігурації:

Include = /etc/samba/smb.conf.%L

У вікні браузера мережі буде видно три сервери: sales, accounting, admin.

Увімкнення параметрів preserve case і short preserve case змушують сервер зберігати всю інформацію, що вводиться, з урахуванням регістру символів (у Windows регістр не має значення, у всіх Unix — навпаки).

Розділ дозволяє користувачам підключатися до своїх робочих каталогів без явного їх опису. При запиті клієнтом свого каталогу //sambaserver/sergej, машина шукає відповідний опис у файлі і якщо не знаходить його, переглядає наявність цього розділу. Якщо розділ існує, то переглядається файл паролів для пошуку робочого каталогу користувача, який надіслав запит, і при знаходженні робить його доступним для користувача.

Типовий опис даного розділу виглядає так:

Comment = Home Directories # коментар, який видно у вікні властивостей мережі browseable = no # визначає, чи виводити ресурс у списку перегляду. writable = yes # дозволяє (no - забороняє) запис у домашню директорію create mode = 0750 # права доступу для новостворених файлів directory mode = 0775 # теж, але тільки для каталогів

Після налаштування параметрів за замовчуванням можна створити мережеві ресурси, доступ до яких може отримати певний користувач чи група користувачів. Створюється такий ресурс із вже існуючого каталогу, для цього у файлі пишемо:

Comment = Public Stuff path = /home/samba public = yes writable = no printable = no write list = administrator, @sales

Параметр path вказує на каталог, в якому розміщується ресурс; параметр public вказує, чи може користуватися ресурсом гість, а printable — може використовуватися ресурс для друку. Параметр write list дозволяє визначити користувачів, яким дозволено запис до ресурсу незалежно від значення writable (у даному прикладіце користувач administrator та група sales). Можливе використання та протилежного списку — read list. Якщо є необхідність приховати деякі файли, то в Unix/Linux для цього ім'я файлу повинне починатися з точки (параметр hide dot files, який регулює відображення прихованих файлів, за умовчанням дорівнює yes). Крім того, можна задати шаблони імен прихованих файлів, для чого використовується параметр hide files. Кожен шаблон починається і закінчується із символу косої риси (/) і може містити символи, що застосовуються у регулярних виразах. Наприклад: hide files = /*.log/??.tmp/. Такі хитрощі обходяться користувачам Windows лише встановленням режиму «Показувати приховані і системні файли» Провідника. Для впевненого обмеження доступності (можливості видалення) файлу (каталогу) використовуйте параметри veto files та delete veto files.

З CD-приводами справа дещо складніша. Вся справа в тому, що в Unix-подібних системах поняття диска відсутнє як таке, і для того, щоб отримати доступ до потрібного пристрою, воно спочатку має бути змонтоване в дерево каталогів (# mount -t iso9660 а після використання, щоб не зруйнувати файлову систему, обов'язково розмонтовано (# umount /dev/cdrom), інакше пристрій просто не віддасть диск. Якщо у вас на сервері запущено демон autofs, то проблема вирішується просто. Для того, щоб пристрій, який не використовується протягом певного часу, був автоматично розмонтований, встановіть потрібне значення параметра timeout у файлі /etc/auto.master. Наприклад:

/mnt/auto/etc/ --timeout=5

(Подібний рядок вже там є, його потрібно тільки розкоментувати). Потім установіть параметри для відповідного пристрою у файлі /etc/auto.tab:

Cdrom -fstype=auto,ro:/dev/cdrom

Після цього прописуємо в /etc/smb.conf наступні рядки, щоб зробити доступним даний ресурс:

Path = /mnt/cdrom writable = no

Другий варіант полягає у використанні директив preexec та postexec, які вказують, які команди необхідно виконати при зверненні до ресурсу та після від'єднання від нього (ці параметри можна вказати для будь-якого ресурсу та навіть у секції global, що відкриває великі можливості).

Path = /mnt/cdrom read only = yes root preexec = mount /mnt/cdrom # монтувати ресурс має право тільки root root postexec = umount /mnt/cdrom # природно, ці точки монтування повинні бути описані у файлі /etc/fstab, інакше Необхідно вказати та інші дані.

Тепер при зверненні до ресурсу автоматично монтується CD-ROM, інколи ж і розмонтується. Вся проблема в тому, що рішення про закриття ресурсу має ухвалити сервер — клієнти, як правило, не повідомляють про це. Але зазвичай це відбувається тому, що ресурсом одночасно користуються відразу кілька користувачів або на одному комп'ютері залишено відкритий файлна цьому ресурсі (Device busy). Тому CD-ROM автоматично не розмонтується, єдиний прийнятний спосіб, щоб звільнити ресурс — подивитися за допомогою утиліти smbstatusномер процесу, що використовує даний ресурс, та вбити його командою # kill pid_number (або kill -s HUP pid_number).

Встановивши необхідну конфігурацію, тепер створимо облікові записи користувачів (за винятком входу з мінімальними правами nobody). Для ідентифікації користувачів SAMBA використовується файл /etc/samba/smbpasswd, який містить імена та зашифровані паролі користувачів. Оскільки механізм шифрування в мережах Windows-машин не сумісний зі стандартними Unix-механізмами, для заповнення файлу паролів використовується окрема утиліта. smbpasswd.

# useradd -s /bin/false -d /home/samba/sergej -g sales sergej # smbpasswd -a sergej # smbpasswd -е sergej

У цьому прикладі додається новий користувач sergej, що належить групі sales, з фіктивною оболонкою (можливі варіанти /sbin/nologin, /dev/null) та домашнім каталогом /home/samba/sergej. Потім створюємо пароль користувача sergej і останнім кроком включаємо доступ користувачеві, т.к. за замовчуванням він вимкнено. Цікавий момент, який може часом спантеличити. Справа в тому, що при підключенні до SAMBA-сервера комп'ютера з Windows NT/2000 користувачеві пропонується ввести, як і належить, логін і пароль, а якщо для доступу використовується комп'ютер з Windows 9x/Me, то користувачеві пропонується ввести тільки пароль, а логін формується автоматично з урахуванням реєстраційного імені.

Можна також порівняти кількох користувачів Windows одному користувачеві Linux/Unix. Для цього створюється файл зіставлення /etc/smbusers.map, в якому окремим рядком задається кожне зіставлення:

Користувач_ Linux = user_win1 user_win2 user_winN

У розділі додайте рядок username map = /etc/smbusers.map. При цьому користувач Windowsповинен реєструватися з паролем користувача, з яким він зіставлений.

За допомогою SAMBA можна організувати можливість мережного друку з комп'ютерів під керуванням Windows (якщо планується окремий сервер друку, то цього буває достатньо і машини з урахуванням 486-процесора).

Для цього у секції необхідно записати такі рядки:

Printcap name = /etc/printcap # файл опису принтерів, підключених до системи load printers = yes # вказує на необхідність автоматичного включеннясписок мережевих ресурсів printing = lprng # система друку (для Linux може ще використовуватися bsd).

Path = /var/spool/samba # вказує на каталог, в якому розміщуються завдання на друк browseable = yes printable = yes read only = yes

Після створення файлу протестуйте його за допомогою утиліти testparm. На жаль, за допомогою даної програми можна виявити лише синтаксичні помилки, а не логічні, тому немає жодної гарантії, що описані у файлі сервіси коректно працюватимуть (при тестуванні будуть виведені всі установки, навіть ті, які встановлені за умовчанням, — тому уважно перегляньте результат). Але якщо програма не лається, можете сподіватися, що під час запуску файл буде завантажений без проблем. Коректність роботи принтерів, перерахованих у файлі /etc/printcap, із сервером SAMBA можна перевірити за допомогою утиліти testprns. Плюс не забувайте про log-файли: при виникненні проблем там іноді можна знайти рішення.

Тепер трохи про хороше. Конфігурування Samba – досить складна процедура, але з дистрибутивом поставляється інструмент адміністрування на основі Web, який називається swat(Samba Web Administration Tool,). Swat запускається у вигляді сервісу або за допомогою сервера Apache та призначений для редагування файлу smb.conf, а також для перевірки стану, запуску та зупинення демонів Samba, зміни паролів користувачів. Щоб він працював у вигляді сервісу, у файлі /etc/services повинен обов'язково бути рядок swat 901/tcp, а у файлі /etc/inetd.conf — swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat (це якщо використовується мережевий демон inetd, як правило, у старих дистрибутивах; у сучасних дистрибутивах використовується більш захищений варіант xinetd). Для того, щоб використовувати при цьому swat у каталозі /etc/xinet.d, створіть файл swat такого змісту:

Service swat ( disable = no port = 901 socket_type = stream wait = no only_from = 127.0.0.1 # це рядок для запуску тільки з локальної машини user = root server = /usr/sbin/swat log_on_failure += USERID )

Тепер для запуску Swat у вікні браузера введіть:

Http://localhost:901

Але перед цим обов'язково створіть користувача adminописаним вище способом. І ніколи не запускайте сервіс SAMBA від імені root.

Після всіх змін у файлі smb.conf іноді потрібно перезапустити демон:

Smb: /etc/rc.d/init.d/smb restart

Якщо після всіх перерахованих дій так і не вдалося організувати доступ до ресурсів SAMBA, то в подальшому налаштуванні допоможуть такі утиліти, як ping(Для перевірки доступності вузла в мережі), nmblookup(для запиту імен NetBIOS), або на крайній випадок tcpdump. І не забувайте про права доступу, адже призначивши для користувача каталог /gde/to/w/glubine, ви дасте можливість прочитати (право на виконання) і попередні каталоги.

Тепер поговоримо про використання клієнта Samba, адже нам (користувачам Linux) також хочеться працювати з мережевими ресурсами Windows. Щоб дізнатися, які ресурси доступні, необхідно ввести команду /usr/bin/smbclient -L host_name. Програма запитатиме пароль, у відповідь на що в більшості випадків достатньо натиснути Enter. Тепер, щоб з'єднатися з потрібним ресурсом, введіть ім'я комп'ютера та потрібний ресурс. Наприклад:

# /usr/bin/smbclient \Alex\Sound

(Тут ми пробуємо підключитися до папки Sound на комп'ютері Alex). В результаті, якщо команда введена правильно і такий мережевий ресурс існує, ви повинні отримати запрошення на введення пароля. Введіть його або натисніть клавішу Enter, якщо пароль не потрібний для доступу. У відповідь ви отримаєте запрошення samba-клієнта: smb: >. Надалі робота відбувається шляхом набору команд, з допомогою яких можна зробити всі необхідні операції з роботі з файлами (копіювання, створення, переміщення тощо.). Щоб отримати довідку, введіть smb: > help. Цей режим дещо незручний, тому в більшості випадків використовують модуль smbfs, що входить до складу samba; але в старих дистрибутивах ядро ​​може бути зібране без підтримки smbfs, і тоді його доведеться перезбирати. Для того щоб змонтувати необхідний ресурс, наберіть щось на зразок цього:

Mount -t smbfs -o username=user,password=123456,iocharset=koi8-r,codepage=866 //alex/sound /mnt/sound.

Якщо не вказати ім'я користувача та пароль, система сама його у вас запитає. Не забувайте, що, переглянувши файл ~HOME/.bash_history, можна за командами, які ви набирали, дізнатися пароль. Ще одна тонкість: якщо програма smbclient правильно відображає файли з російськими іменами, модуль smbfs іноді не звертає на інше кодування абсолютно ніякої уваги, навіть якщо вказати її явно. Кажуть, що це можна виправити патчем, але я для свого Red Hat його ще не знайшов.

Якщо ви бажаєте, щоб ресурс SMB монтувався автоматично при запуску системи, додайте до файлу /etc/fstab приблизно такий рядок:

//[email protected]/sound /mnt/alex/sound smbfs rw, noauto 0 0.

У цьому прикладі від імені користувача guest(якщо ресурс підтримує даного користувача і якщо цей користувач має доступ тільки по паролю, то не хвилюйтеся: у вас його неодмінно запитають) мережевий ресурс sound на комп'ютері alex монтується в папку /mnt/alex/sound з можливістю запису до цього каталогу. До речі, клієнт Samba добре бачить приховані мережеві ресурси, тобто. ті, у яких мережеве ім'я закінчується знаком $.

Як бачите, доводиться працювати з командним рядком, який у сучасного користувача викликає тихий жах. І тут світ OpenSource пішов йому назустріч — створено багато утиліт, що дозволяють працювати з Samba-ресурсами звичнішим шляхом, натискаючи кнопки в графічних оболонках. Найпопулярніша програма, що входить до дистрибутивів Mandrake і похідних від нього, а також Debian — gnomba. У будь-якому випадку її можна знайти на більшості серверів з програмним забезпеченням для Linux (на ftp://ftp.altlinux.ru/ бачив точно). Ця утилітадозволяє переглянути доступні мережеві ресурси () і при необхідності змонтувати в потрібний каталог, при цьому можливий варіант монтування із зазначенням логіна та пароля для тих ресурсів, які цього вимагають. Можливий запуск файлового менеджера під час монтування (за замовчуванням) gmc), створення каталогів для ресурсів, що монтуються, завдання опції автоматичного сканування при запуску програми (можливо з використанням протоколу SMB за замовчуванням) і сканування за IP-адресами (планується з використанням WINS-протоколу). З нез'ясованих причин у деяких дистрибутивах при скануванні за допомогою SMB-протоколу не виводилися мережеві ресурси, тому я завжди використовую другий метод, благо він діє безвідмовно, необхідно лише задати діапазон IP-адрес для сканування (якщо знаєте). Для того, щоб відображалися правильно російські імена файлів, не забудьте встановити шрифти koi8-r у вкладці Опції > Вибір шрифту, а також перевірити рядки, що вказують кодування кирилиці у файлі smb.conf (див. вище).

Якщо gnomba може лише монтувати та розмонтувати ресурси, то програма xsmbrowserдозволяє ще й заходити в них як папки на локальному комп'ютері (). Правда, мені поки не вдалося змусити цю програму розуміти файли з російськими назвами, але є і позитивні сторони: при роботі даної програми всі команди з монтування та різні мережні запити виводяться на консоль, що дозволяє добре розібратися в них. Розробники KDE теж постаралися: через Preferences > Informationдоступна утиліта Samba Status, що відображає всі підключення до/від локального комп'ютера, що одночасно є зручним засобом перегляду.log-файлів. Аналогічну інформацію надає і утиліта komba, що можна знайти на http://linux.tucows.com/ ().

Хоч би як я хотів розповісти вам більше, але журнал є журнал — всього не вмістиш. Далі на допомогу вам прийдуть всюдисущі man та info. Також усю необхідну довідкову інформацію можна отримати з утиліти SWAT, до того ж у Red Hat 7.3 виявилася книга Using Samba Robert"a Eckstein"a(мова англійська - погано, абсолютно безкоштовно - добре: /usr/share/swat/using_samba), доступна також із SWAT (). У каталозі /usr/share/doc/samba можна знайти додаткову документацію, FAQ та приклади конфігураційних файлів. У різних форумах можна зустріти досить суперечливі думки щодо роботи Samba, від вкрай негативних до повного захоплення. Особисто я на стороні прихильників цього емулятора Windows NT, до того ж, за результатами тестів при однаковому обладнанні сервер Samba показує продуктивність приблизно на 25-30% вище, ніж комп'ютер під управлінням системи від Microsoft. Успіхів.

Реалізація мережевих протоколів Server Message Block (SMB)і Common Internet File System (CIFS). Основне призначення - розшарування файлів та принтерів між Linux та Windows системами.

Sambaскладається з декількох демонів, що працюють у фоновому режиміі надають сервіси та ряд інструментів командного рядка для взаємодії зі службами Windows:

  • smbd- демон, що є SMB-сервером файлових служб та служб друку;
  • nmbd- демон, який надає служби імен NetBIOS;
  • smblient- Утиліта надає доступ з командного рядка до ресурсів SMB. Вона також дозволяє отримати списки загальних ресурсів на віддалених серверах та переглядати мережеве оточення;
  • smb.conf- конфігураційний файл, що містить параметри для всіх інструментів Samba;

Список портів, що використовуються Samba

  • share- цей режим безпеки емулює метод аутентифікації, що використовується операційними системами Windows 9x/Windows Me. У цьому режимі імена користувачів ігноруються, а паролі призначаються загальним ресурсам. У цьому режимі Samba намагається використовувати наданий клієнтом пароль, яким можуть користуватися різні користувачі.
  • user* - цей режим безпеки встановлено за замовчуванням і використовує для автентифікації ім'я користувача та пароль, як це зазвичай робиться на Linux. У більшості випадків у сучасних операційних системах паролі зберігаються у зашифрованій базі даних, яку використовує лише Samba.
  • server- цей режим безпеки використовується тоді, коли Samba виконує аутентифікацію, звертаючись до іншого сервера. Для клієнтів цей режим виглядає так само, як аутентифікація на рівні користувача (режим user), але фактично для аутентифікації Samba звертається до сервера, вказаному в параметрі password server.
  • domain- Використовуючи цей режим безпеки, можна повністю приєднатися до домену Windows; для клієнтів це виглядає так само, як автентифікація на рівні користувача. На відміну від автентифікації на рівні сервера, доменна автентифікація використовує більш захищений обмін паролями на рівні домену. Для повного приєднання до домену потрібно виконати додаткові команди в системі Samba і, можливо, на контролері домену.
  • ads- цей режим безпеки схожий на метод аутентифікації в домені, але потребує контролера домену Active Directory Domain Services.

Повний перелік параметрів Sambaє в manpages.

Вище наведено приклад з доступом для директорії із загальним доступом. Розглянемо ще приклад із приватною директорією, до якої доступ лише за логіном та паролем.

Створимо групу та додамо до неї користувача

Sudo groupadd smbgrp sudo usermod -a -G smbgrp proft

Створимо директорію для користувача та встановимо права

Sudo mkdir -p /srv/samba/proft sudo chown -R proft: smbgrp /srv/samba/proft sudo chmod -R 0770 /srv/samba/proft

Створимо samba-користувача

Sudo smbpasswd -a proft

Додамо до /etc/samba/smb.conf новий ресурс

Path = /srv/samba/proft valid users = @smbgrp guest ok = no writable = yes browsable = yes

Перезапустимо сервер

Sudo systemctl restart smbd

Приклад налаштування ресурсу в якому є сімлінкна папку користувача ( /srv/samba/media/video » /home/proft/video)

Path = /srv/samba/media guest ok = yes read only = yes browsable = yes force user = proft

Налаштування клієнта

Перегляд загальних ресурсів комп'ютера

Smbclient -L 192.168.24.101 -U%

Ще один спосіб підключення для анонімного користувача з командним рядком

Smbclient -U nobody //192.168.24.101/public ls

Якщо на сервері налаштовано більше високий рівеньбезпеки, то може знадобитися передати ім'я користувача або домену за допомогою параметрів -W та -U відповідно.

Smbclient -L 192.168.24.101 -U proft -W WORKGROUP

Монтування samba-ресурсу

# створення точки монтування mkdir -p ~/shares/public # монтування ресурсу # для анонімного користувача nobody mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=nobody,password=,workgroup= WORKGROUP,ip=192.168.24.101,utf8 # для користувача proft mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,password=1,workgroup=WORKGROUP,ip=192. 24.101,utf8

Ще краще паролі зберігати в окремому файлі

# sudo vim /etc/samba/sambacreds username=proft password=1 username=noboy password=

Виставимо права доступу 0600

Sudo chmod 0600 /etc/samba/sambacreds

Новий рядок для монтування

Mount -t cifs //192.168.24.101/public /home/proft/shares/public -o user=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101

І приклад для /etc/fstab

//192.168.24.101/public /home/proft/shares/public cifs noauto,username=proft,credentials=/etc/samba/sambacreds,workgroup=WORKGROUP,ip=192.168.24.101 0 0

Відкрити ресурс у файловому менеджері Nautilus/Nemo/etc можна таким шляхом smb://192.268.24.101.

Якщо Nemo пише Nemo може неналежним чином "smb" місцями.значить не вистачає пакету gvfs-smb.

Доступ до сервера з Windows та Android клієнта

Під Windows дізнатися робочу групу з консолі можна за допомогою

Net config workstation

Відкрити ресурси на віддаленій машині можна набравши в рядку Explorer (Провідник) або Run (Start - Run) UNC-адресу: \192.168.24.101 .

Під Android підключиться до сервера можна за допомогою ES File ExplorerНа вкладці Network додаємо сервер, просто по IP (без вказівки схеми, smb). Після цього можна відкривати розшаровані ресурси. Для статистики: HDRIP-фільм йде без підгальмовування.

Додаткове чтиво