Налаштування samba, friendsland s wiki, fandom powered by wikia

Як я налаштовував Самбу.

Останнім часом в форумі стало з'являтися все більше питань, пов'язаних з налаштуванням і використанням сервера Samba, причому здебільшого вони воістину елементарні. У зв'язку з цим я вирішив розрулити ситуацію, що склалася і отсеить хоча б половину запитань. Втім, була ще й інша причина. Тиждень тому я зібрав собі новий комп. А оскільки тепер у мене їх два, моя мама попросила один віддати їй, встановивши на нього віндовс. Комп я віддав, але попередньо прочитав лекцію на тему "виндовс-мастдай, Лінукс-рулезз", завдяки чому на старий комп був встановлений RedHat Linux 9. Можливо, цієї статті не було б, якщо не одне але: у старого компа не було ЖОДНИХ пристроїв обміну інформацією з зовнішнім світом. Зрозуміло, на ньому стояв CDROM, але він був тільки Новомосковскющій, а флоппі-диска не було в принципі (я завжди говорив, що це зло і викидав його). Гарненько все зваживши і порівнявши вартість нового флоппика (

300 руб.) І 20 метрів кручений пари (

200 руб.), Я вирішив заощадити 100 рублів і заробити проблем на м'яке місце, створивши домашню сітку.

Насамперед були визначені завдання, які повинна вирішувати мережу. Для моєї мами це тільки збереження документів з подальшою їх записом на диск через мій комп. Чи не ставилося завдання забезпечити старий комп Інтернетом, тому я не піднімав на своєму компі Squid (хоча, можливо, доведеться, так як незабаром я планую купити ноутбук, і тоді я ще напишу про налаштування цього самого СКВИДов).

Далі я припускаю, що у Вас на комп'ютері вже встановлено пакет Samba. Ви можете перевірити це командою:

Результати виконання даної команди повинні бути приблизно такими ж, як і у мене.

Пакети system-config-samba-1.2.31-1 і samba-swat-3.0.14a-2 можна не встановлювати, ми не будемо користуватися конфігураторами.

Я так само сподіваюся, що у Вас встановлені всі необхідні пакети для роботи з мережею. Так само непогано встановити пакет nmap, він буде потрібен час налаштування мережі. Перевірте це за допомогою такої команди:

В принципі, всі ці пакети вже повинна бути встановлені у Вашій системі, але якщо це не так - встановіть їх.

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

Майже всі дії повинна виконуватися від користувача root.

Налаштування сервера Правити

(Маршрут за замовчуванням я призначив від балди, аби був)

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

Далі можна приступити до налаштування самого сервера Samba. Я буду виконувати цю процедуру, попутно пояснюючи Вам, для чого я брав ті чи інші опції. Насамперед визначимося, які ресурси має надавати сервер. Я вирішив, що цілком достатньо буде двох ресурсів: "Public" (до якого дозволений доступ на читання і запис всім бажаючим хостам з моєю маленькою мережі) і "Domovenok", до якого має доступ тільки користувач комп'ютера "domovenok".

Далі займемося напосредственно конфигурированием сервера.

Файл конфігурації Samba (/etc/samba/smb.conf) має наступний вигляд:

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

Почнемо з секції "global":

Секція "global" Правити

Розберемося, що ж означають ці параметри:

workgroup = HOMEWORKGROUP
Визначає ім'я робочої групи.

server string = Liksys Home Server
Визначає назву сервера.

printcap name = / etc / printcap
printing = cups
cups options = raw
Налаштування мережевого принтера. Оскільки принтера у мене немає, можна навіть і їх не вказувати, але я все-таки зробив це. Перший рядок задає шлях до файлу, содержащіму інформацію про принтерах, друга - визначає систему пече, третя - параметри.

log file = /var/log/samba/log.smbd
max log size = 50
Перший рядок визначає шлях до журналу сервера Samba, а друга - розмір журналу. Можна ще додати рядок "debug level = 3", вона використовується при налагодженні сервера, виводячи в журнал більш детальну інформацію. Під час налаштування сервера я використовував рівень 5.

socket options = TCP_NODELAY SO_SNDBUF = 8192 SO_RCVBUF = 8192
Опції сокета. Якщо не знаєте, що це таке, краще залишити як є або почитати ман.

local master = yes
preferred master = yes
Ці рядки дозволяють комп'ютеру ставати мастербраузером. Після запуску сервера і підключення до мережі, Samba влаштує перевибори (ІМХО, Революцію), і з наіобльшей ймовірністю вибере мастербраузером себе. Слід зазначити, що використання цих параметрів позбавляє від багатьох глюків (наприклад, в одній з мереж, яке я налаштовував, поки я не поставив цей параметр, з'являлися і зникали неіснуючі комп'ютери: ось такі віндового глюки).

domain master = no
wins support = no
dns proxy = no
Перший рядок забороняє ставати майстром домену, друга відключає WINS (що це таке, докладно описано в мане), третя - відключає DNS Proxy.

guest ok = yes
guest account = nobody
Перший рядок містить гостьову запис, друга - визначає відповідність "гостя" локальному користувачеві "nobody", якому заборонена реєстрація на локальній машині.

unix charset = utf8
dos charset = cp1251
display charset = cp1251
Ну тут все повинно бути зрозуміло без пояснень. Ці опції позбавляють від глюків зі шрифтами / кодуваннями.

Розділ [Public] Правити

Тепер саме час зайнятися налаштуванням призначених для користувача ресурсів:

Налаштування машини-сервера Правити

Ми закінчили з конфігурацією сервера. Тепер потрібно налаштувати саму машину.

Для цього створимо каталоги і поставимо права доступу таким чином:

Тепер додамо користувача mama в систему:

Тепер необхідно створити обліковий запис Samba:

Думаю, тут необхідні пояснення. При додаванні користувача в Samba відбувається щось на зразок встановлення зв'язку між локальним користувачем і користувачем Samba. Це дає можливість створення досить складних конфігурацій серверів, при яких використовуються стандартні механізми UNIX, такі, як права доступу і групи користувачів. Тепер, коли віддалений користувач створить файл, то власником цього файлу буде локальний користувач, з яким встановлено зв'язок користувача Samba. Віддалений ж користувач буде підкорятися тим же правилам, які встановлені для локального користувача, тобто прав доступу, ставитися до відповідної групи користувачів і ін. Але для великих систем небажано "плодити" велика кількість користувачів. Тому при створенні локального користувача я забороняю йому реєстрацію в системі, встановлюючи його оболонку як / sbin / nologin. Якщо у вас в системі немає такої "оболонки", то ви можете використовувати "/ bin / false". Подивитися доступні оболонки ви можете так:

Виконує він практично ті ж самі функції, що і файл / etc / hosts.

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

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

Командою "./netctl up" сервер і сітка піднімаються, а "./netctl down" мережу і сервер відключаються. Як запобіжний засіб, перед маніпуляціями з мережею перевіряється статус SELinux.

Піднімемо сервер спочатку командою /etc/rc.d/init.d/smb start (використовувати скрипт я буду тільки тоді, коли все запрацює):

Перевіримо наш сервер (ці дії я робив від звичайного користувача):

Як видно вище, Samba села на два порти: 139 і 445. Так і повинно бути.

Тепер спробуємо зареєструватися гостем на сервері:

Схоже, що все в порядку.

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

і так чекати до посиніння. Я чекав хвилин 10, після чого nmap заявив, що на сервері немає відкрутити портів і його взагалі не видно. Спробував пропінгувати:

Пінгуєтся нормально. Дивно. Став розбиратися. Кажу відразу, це зайняло години півтори. Я іспользоваля всякі кошти, типу tcpdump / nmap / ping і інші, аж до встановлення рівня налагоджувальних повідомлень Samba до 5. Виявилося, що на сервері стояла політика iptables, при якій фаєрвол всі, хто входить дані по eth0, крім ping`а. Вилікувалося просто: установкою eth0 як довіреної пристрою. Це так само не спричинило за собою проблем з безпекою, оскільки у мене ВСЕ порти, крома Самби були закриті, а остання включалася тільки на вимогу, та ще стояв SELinux з жорсткою політикою "мочити всіх". Регулювали це на сервері конфігураторм system-config-securitylevel, на клієнті - redhat-config-securitylevel (посто тому, що вручну це робити було лінь).

Поставивши довіреною порт eth0 і на клієнті, я спробував ще раз просканувати порти на сервері. На цей раз все запрацювало:

Робота в мережі Правити

Тепер, коли мережа налаштована, її можна піднімати командою:

Для того, щоб мати можливість використовувати файли користувача mama на сервері, я включив себе в групу користувача mama. Це більш елегантне рішення, ніж установка прав типу 0666 або 0777 на нові файли, створювані користувачами Samba.

Для моніторингу мережевих підключень по Самбі потрібно використовувати команду smbstatus. Для зручності я запускаю її в вікні xterm наступним чином:

Ця команда автоматично оновлює інформацію про підключення і виводить її на екран.

Трохи про SWAT. правити

Коли попросять, введіть ім'я користувача root і його пароль. Після цього Ви можете приступити до управління сервером Samba. Можливо, у вас не вийде запустити SWAT. Це пов'язано з тим, що демон xinetd не обслуговує SWAT. Для того, щоб виправити це, виконайте наступні дії: 1) Відредагуйте файл /etc/xinetd.d/swat, змінивши в ньому рядок disable = yes на disable = no. 2) Перезапустіть xinetd, скориставшись командою: Код /etc/rc.d/init.d/xinetd restart

Інтерфейс SWAT досить зрозумілий, тому я не описую використання цього засобу. Зазначу лише, що я не користуюся SWAT, а віддаю перевагу налаштовувати все "по-старому" вручну. До того ж, якщо ви налаштовуєте серйозний сервер, на ньому, можливо, не буде встановлений X. А використання текстових браузерів типу Lynx зі SWAT - збочення. Я користуюся тільки двома конфігураторами: system-config-securitylevel і system-config-network (останній тільки для настройки модему). Коли лінь запускати Ікси і щось треба швидко змінити - користуюся setup`ом. Однак там, де потрібна гнучка настройка, я все роблю вручну.

Висновок. правити

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

Можливо обмежувати доступ до ресурсів для машин, використовуючи параметри "interfaces", "hosts deny", "hosts allow"; обмежувати доступ до ресурсів користувачам за допомогою параметрів "guest ok", "valid users", "invalid users" і інших. Сервер Samba - це дуже гнучка система, вона підтримує сотні параметрів, тому для повноцінного використання цього сервера необхідно добре уявляти собі, що робить та чи інша опція, для чого можна звернутися до відповідних man-сторінок керівництва:

На закінчення хотілося б навести деякі команди, які корисні при налаштуванні / використанні сервера Samba.

smbclient
Дозволяє підключатися до сервера Samba.

smbclient -L //
Виводить список доступних ресурсів комп'ютера.

smbmount /// / Mount / point
або
mount -t smbfs /// / Mount / point
Дозволяє примонтировать ресурс до файлової системи. Він буде доступний як звичайний каталог. Команда smbmount має безліч параметрів, для отримання довідки введіть команду man smbmount. Монтувати ресурс можна і командою mount, як показано вище.

testparm
Перевіряє правильність конфігурації файлу /etc/samba/smb.conf. Якщо все нормально, це хороший знак, швидше за все сервер буде працювати нормально. Для довідки введіть man testparm.

/etc/rc.d/init.d/smb start / stop / status / restart
Управління демонами smbd і nmbd.

smbstatus
Моніторинг стану сервера Samba.

groupadd -g "GID" groupname
useradd -u "UID" -g "GID" -s / sbin / nologin username
passwd username
smbpasswd -a username
Послідовність команд для додавання Samba-користувача.

Виявлено використання розширення AdBlock.