Linux создание файлового сервера

# Создание файлового сервера при помощи Samba на Ubuntu

Создание файлообменника — одна из базовых задач при администрировании внутренних сетей предприятия. Частично эту задачу можно решить при помощи открытия доступа пользователям к каким-либо отдельным папкам на сервере, но лучше и правильнее создавать отдельный сервер, предназначенный для хранения и обмена файлами.

В этой инструкции мы установим Samba — стандартный сервис для создания файлообменника в Linux — на подготовленный к работе сервер под управлением Ubuntu, создадим нескольких пользователей, которым будет открыт доступ к файлообменнику, и добавим администратора с правами доступа во все папки.

# Установка Samba

Устанавливать Samba будем из стандартных репозиториев apt:

sudo apt update sudo apt install samba 

Сразу после установки автоматически запускается не только Samba (smbd), но и идущий в комплекте установки Samba NetBIOS server (nmbd). Он нужен для организации связи с Windows-машинами, поэтому на данном этапе нам не нужен — отключим его:

sudo systemctl stop nmbd.service sudo systemctl disable nmbd.service 
sudo systemctl status smbd # Output smbd.service - Samba SMB Daemon Loaded: loaded (/lib/systemd/system/smbd.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-04-19 11:51:11 +05; 4h 1min ago Docs: man:smbd(8) man:samba(7) man:smb.conf(5) 

Samba установлена и запущена. Можем переходить к настройке и запуску сервиса!

# Настройка Samba

Создадим его резервную копию основного файла настроек:

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig 

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

ip list # Output 1: lo: LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: venet0: BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default link/void 3: docker0: NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default link/ether 02:42:a2:78:1c:13 brd ff:ff:ff:ff:ff:ff 

В нашем случае три сетевых интерфейса:

  1. Стандартный lo, отвечающий за обратную связь с внутренней сетью.
  2. venet0 — основной интерфейс для подключения к внешней сети.
  3. docker0 — интерфейс, используемый Docker, в данном случае он нам не интересен.

Откроем конфигурационный файл Samba:

В основной части конфигурационного файла — в разделе [global] — много настроек и закомментированных строк, поясняющих их назначение. Нам нужно проконтролировать значения в следующих строках:

[global] server string = samba.example.com server role = standalone server interfaces = lo venet0 bind interfaces only = yes disable netbios = yes smb ports = 445 log file = /var/log/samba/smb.log max log size = 10000 

Здесь указаны следующие значения:

  • server_string — имя сервера, которое будет ему присвоено. Здесь мы выбрали такое же, как у нашего домена example.com, на котором мы будем его запускать;
  • server role — роль сервера в сети, в данном случае параметр standalone server означает, что это файловый сервер;
  • interfaces — в этой строке указываем оба сетевых интерфейса (интерфейс обратной связи и основной сетевой);
  • bind interfaces only — параметр, запрещающий подключаться к нашему серверу через другие сетевые интерфейсы;
  • disable netbios — отключает все интерфейсы NetBIOS;
  • smb ports — в этой строке можно указать порт, на котором будет работать Samba, по умолчанию это порт 445 (Samba будет работать на нём, даже если его не указывать здесь);
  • log file — адрес к логу Samba;
  • max log size — максимальный размер лога в байтах.

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

testparm # Output Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions … 

После этого можно будет нажать Enter, чтобы посмотреть заданные параметры сервера:

#Output # Global parameters [global] bind interfaces only = Yes interfaces = venet0 lo log file = /var/log/samba/smb.log %n logging = file 

Добавим Samba в список исключений фаервола, если он у вас включён:

Теперь файловый сервер готов к старту, осталось только добавить пользователей.

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

Мы добавим на сервер двух новых пользователей, для простоты назовём их user1 и user2, и пользователя admin. Для пользователей user1 и user2 создадим отдельные папки на сервере, к которым они будут иметь доступ, и одну общую папку для них. Пользователь admin будет иметь доступ ко всем трём папкам.

Сначала создадим отдельную папку, где у нас будет файлообменник, и обозначим её как папку файлообменника:

sudo mkdir /samba/ sudo chown :sambashare /samba/ 

Теперь создадим папку для первого пользователя:

После этого добавим пользователя user1 в качестве системного пользователя, но запретим ему подключение к серверу по SSH и не будем создавать для него домашнюю директорию — он будет пользоваться исключительно только что созданной папкой:

sudo adduser --home /samba/user1 --no-create-home --shell /usr/sbin/nologin --ingroup sambashare user1 

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

sudo chown user1:sambashare /samba/user1/ sudo chmod 2770 /samba/user1/ 

Значение прав 2770 означает, что создаваемые внутри папки файлы будут получать те же права, что и сама папка.

Теперь осталось добавить пользователя user1 в базу данных Samba и активировать его. В Samba есть своя база данных с пользователями и паролями, куда мы и будем добавлять нашего нового пользователя:

sudo smbpasswd -a user1 sudo smbpasswd -e user1 

Флаг -a добавляет пользователя к базе данных Samba, а флаг -e активирует его.

После этого нужно проделать такие же операции для пользователя user2.

Когда оба пользователя будут добавлены к серверу Samba, можно переходить к добавлению администратора сервера. Для администратора нужно будет проделать те же операции — основные различия в правах мы зададим чуть позже, на стадии описания папок:

sudo mkdir /samba/everyone sudo adduser --home /samba/everyone --no-create-home --shell /usr/sbin/nologin --ingroup sambashare admin sudo chown admin:sambashare /samba/everyone/ sudo chmod 2770 /samba/everyone/ sudo smbpasswd -a admin sudo smbpasswd -e admin 

Также создадим группу пользователей администраторы, у которых будет доступ ко всем файлам и папкам на сервере — группой и её членами управлять гораздо проще, чем прописывать каждому новому администратору доступ к каждой из папок вручную:.

sudo groupadd admins sudo usermod -G admins admin 

Первой командой мы создали группу admins, второй — добавили в неё нашего пользователя admin.

# Настройка доступа к папкам

Права на доступ к папкам настраиваются в основном конфигурационном файле Samba:

В открывшийся текстовый файл в самом конце нужно добавить описание директорий и пользователей, у которых есть право доступа к ним:

[user1] path = /samba/user1 browseable = no read only = no force create mode = 0660 force directory mode = 2770 valid users = user1 @admins 
  • [user1] — общее имя описываемой файловой шары;
  • path — путь к директории, куда открывается доступ;
  • browseable — разрешение другим пользователям видеть содержимое этой папки (параметр no означает, что другие пользователи смогут видеть только само наличие этой папки, но не будут видеть, что находится внутри);
  • read only — указание на то, могут ли пользователи, у которых есть доступ к этой папке, только читать файлы, находящиеся здесь, или могут создавать здесь новые;
  • force create mode — какие права устанавливаются создаваемым файлам;
  • force directory mode — какие права устанавливаются создаваемым вложенным папкам;
  • valid users — имена пользователей, имеющих доступ к папке (в нашем случае это сам пользователь user1 и все пользователи из группы admins).

Делаем то же самое для директории для пользователя user2 и переходим к настройке общей папки:

[everyone] path = /samba/everyone browseable = yes read only = no force create mode = 0660 force directory mode = 2770 valid users = @sambashare @admins 

Единственным отличием помимо параметра path в данном случае будет группа пользователей, имеющих доступ к папке. В строке valid users мы указываем всех пользователей из группы sambashare и группы admins. Это общая папка, куда сможет зайти каждый, имеющий доступ к серверу.

После сохранения конфигурационного файла снова запустим тест настроек:

testparm # Output Load smb config files from /etc/samba/smb.conf Loaded services file OK. Weak crypto is allowed Server role: ROLE_STANDALONE … 

Всё в порядке, в конфигурационном файле нет ошибок — можно пробовать подключение к серверу.

# Samba-клиент

Чтобы подключиться к серверу с файлообменником, нам нужен будет клиент. Скачаем его — он стандартный:

sudo apt install samba-client 

После установки клиента можно сразу же попробовать подключиться к нашему файловому серверу:

smbclient //samba.example.com/user1 -U user1 

Нас попросят указать пароль для доступа, и после этого значок в командной строке сменится на smb: \> . Это будет означать, что мы находимся в интерфейсе управления файлами и папками нашей файловой шары.

Проверим, как она работает — создадим папку и посмотрим список доступных:

mkdir first ls # Output . D 0 Tue Apr 19 11:21:37 2022 .. D 0 Tue Apr 19 11:31:51 2022 first D 0 Wed Apr 20 10:44:14 2022 

Мы успешно создали папку на нашем файлообменнике.

© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.

Источник

Читайте также:  Linux evtx чем открыть
Оцените статью
Adblock
detector