На Ubuntu дуже легко розгорнути файловий сервер для Windows машин. Стандартне застосування такого сервера - організація файлових сховищ в рамках Active Directory домену. Однак легко можна створювати файлові сервера і в бездоменной мережі, наприклад - для домашнього використання.
У будь-якому випадку вам буде потрібно як мінімум Samba, встановити яку можна через менеджер пакетів Synaptic або командою
Для створення файлового сервера вам не потрібно налаштовувати PAM, досить додати доменних користувачів і групи через Winbind в систему.
Після успішного входу в домен вам залишиться всього лише налаштувати розшарені ресурси на вашому комп'ютері.
Тут варто відразу звернути увагу на одну дуже важливу річ: Samba намагається спроектувати права на файли Windows на права Unix. однак через кардинальних відмінностей в механізмах присвоєння прав зробити це не завжди можливо. Врахуйте, що права на файли завжди і в будь-якому випадку контролюються вашої файлової ситемой на комп'ютері з Ubuntu, самба може лише підлаштовуватися під них, але не змінювати їх поведінку.
Тому за замовчуванням на расшаренних ресурсах будуть вельми мізерні можливості контролю доступу - призначення різних прав для користувача, групи і всіх інших. Однак це легко виправити, додавши в вашу ФС підтримку POSIX ACL. В цьому випадку можна буде призначати різні права різним користувачам і групам практично як в Windows.
Підтримка POSIX ACL є як мінімум в ext3 / 4, для її активації вам необхідно просто додати до опцій монтування потрібного розділу параметр acl.
Важливо, щоб каталог, який ви хочете розшарити через Samba, лежав на диску, змонтованому з опцією acl. Інакше ви не зможете нормально використовувати механізм розмежування прав доступу до файлів на кулях.
Є і ще один вельми важливий момент: POSIX ACL не підтримують успадкування прав доступу від батьківських каталогів, а в Windows ця можливість присутня. Тому в Samba реалізований додатковий механізм збереження інформації про спадкування прав доступу, який використовує розширені атрибути файлової системи. Тому щоб Samba могла коректно обробляти успадкування прав крім acl до опцій монтування файлової системи необхідно додавати параметр user_xattr. який якраз і відповідає за включення підтримки розширених атрибутів.
Наприклад, я завжди використовую для організації расшаренних ресурсів окремі LVM диски і у мене рядки в fstab для них виглядають приблизно так:
Опція noexec потрібна тому, що на кулях для Windows 100% не повинно бути виконуваних файлів Linux, і зайвий раз перестрахуватися не завадить.
Для роботи з acl на Ubuntu необхідно встановити пакет відповідних утиліт:
Після чого подивитися розширені права (тобто ACL) на файл або каталог можна буде командою
А встановити командою
Про всяк випадок хочу звернути увагу на те, що механізм POSIX ACL не має ніякого відношення до Samba - це просто надбудова над стандартним механізмом розмежування прав в Linux. Відповідно Samba може його використовувати, але не може будь-яким чином змінити або обійти.
Для роботи з розширеними атрибутами ФС буде потрібно дуже схожий на acl пакет утиліт - attr. поставити який можна командою
А для установки
Однак тут є одна невелика заковика. Справа в тому, що Samba зберігає всю інформацію про спадкування в бінарному вигляді в єдиному розширеному атрибуті user.SAMBA_PAI. Тому поміняти щось за допомогою setfattr вам не вдасться, тільки хіба що повністю видалити розширені атрибути (іноді таке може знадобитися зробити).
Ну а управляти спадкуванням прав вам доведеться з Windows машини за допомогою штатних інструментів цієї системи. Або ж за допомогою утиліти smbcacls. якщо ви розберетеся, як їй користуватися.
Існує так само експериментальний VFS модуль acl_xattr, який дозволяє зберігати NT ACL повністю в розширених атрибутах. На жаль, документації по ньому немає, тому що щось зрозуміле сказати з цього приводу складно. Очікується, що в Samba 4 буде повна інтегрована підтримка NT ACL. а поки що можна користуватися тим, що є.
Крім того, розширені атрибути файлової системи дозволяють включити в Samba повну підтримку файлових атрибутів DOS, таких як прихований, архівний та ін.
Отже, будемо вважати що у вас є в системі каталог, який ви хочете розшарити через Samba (і він знаходиться на диску, подмонтіровать з підтримкою acl і user_xattr). Тепер необхідно власне налаштувати його расшаріваніє. Для цього потрібно внести відповідну інформацію в файл /etc/samba/smb.conf.
Почнемо з загальних налаштувань, які можна додати в секцію [global] цього файлу (це далеко не всі можливі параметри, просто кілька досить корисних з них):
Є безліч інших опцій - за подробицями варто звернутися до документації по Samba.
Не забудьте поставити правильного власника і права доступу на папку, яку ви расшарівать, а то незважаючи на будь-які настройки самби в неї може бути заборонений запис на рівні прав Linux. Я роблю зазвичай так:
Зверніть увагу, так як ваша Ubuntu машина введена в домен, то ви можете використовувати користувачів і групи домену в якості власників файлів прямо в Ubuntu.
Перевірте правильність конфігурації Samba командою
Після чого перезапустіть Samba:
Тепер ви можете з будь-якої машини домену отримати доступ до розшарений ресурсу.
До речі, не забувайте про SGID і Sticky біти для каталогів. Вони дозволять вам наслідувати групу-власника і забороняти користувачам видалення не своїх файлів - це може бути дуже зручно для багатокористувацьких сховищ. Однак на відміну від редагування прав з Windows поміняти ці біти на папках на розшарений ресурсі не вийде - тільки вручну безпосередньо на Ubuntu комп'ютері.
Крім усього іншого Samba дозволяє організовувати зберігання попередніх версій файлів, що буває іноді корисно при створенні спільних ресурсів з одними даними. Подробиці у відповідній статті:
Основною особливістю такої організації файлового сховища буде те, що вся інформація про користувачів буде зберігатися в базі даних Samba, відповідно додавати і видаляти користувачів на самбу треба буде вручну.
Найголовніше - визначитися з використовуваним способом доступу до ресурсу. Для його зміни треба правильно встановити значення параметра security в секції [global] файлу /etc/samba/smb.conf. Детальніше про цей параметр можна почитати тут або ж в офіційній документації.
Зазвичай використовується значення share або user.
Далі не забудьте поміняти значення параметра workgroup на потрібне, а все решта настройки сильно залежать від ваших цілей.
Детальніше настройка простого файлового сервера описана в основній статті про Samba.
Для будинку зручно щоб всі бачили всіх. Це можна зробити якщо додати 4 рядки в секцію [global] файлу /etc/samba/smb.conf. Деякі можуть вже існувати.
NOTEBOOK - ім'я комп'ютера яке буде в мережі. Крім цього треба встановити додаткові програми.
Для kubuntu треба ще встановити smb4k. Після редагування конфігов треба перезапустити служби. У systemd (починаючи з 15.04) перезапуск виглядає так:
Подивитися «кулі» можна через файловий броузер nautilus, konkueror або так:
Створено папку для обміну файлів.
Додайте в кінець файлу /etc/samba/smb.conf наступні рядки, yuraku1504 замініть на ім'я користувача комп'ютера з самбою:
Папка буде відкрита для читання і запису.