Samba. Управление доступом.

В прошлой статье мы выполнили базовую настройку Samba. В результате все пользователи внутри нашей сети получили возможность читать и записывать любые данные в расшаренной папке. В этой статье я расскажу, как сделать директорию доступной (или, наоборот, недоступной) для определенных пользователей или ip-адресов внутри вашей сети. Кроме того, я покажу, как скрыть расшаренную нами папку от посторонних глаз.

Цикл статей о Samba.

  1. Установка и простая настройка.
  2. Управление доступом.
  3. Графические и Web-интерфейсы.
  4. Подключаем сервер с Samba к домену Windows (1 часть).
  5. Подключаем сервер с Samba к домену Windows (2 часть).
  6. Подключаем сервер с Samba к домену Windows (3 часть): управление пользователями.
  7. Samba в роли контроллера домена Active Directory.

О пользователях и паролях в Samba.

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

Пароль, в отличие от имени, необходимо установить отдельно. Делается это с помощью утилиты smbpasswd, с ее же помощью мы включаем (активируем) пользователя:

smbpasswd -a username
smbpasswd -e username

Вместо username подставьте имя нужного (и обязательно существующего!) пользователя Linux. В процессе потребуется дважды ввести пароль.

Если у вас или других пользователей есть компьютер с Windows, где имя пользователя отличается от используемого в Linux, очень удобно создать псевдоним (алиас), указав его в файле /etc/samba/smbusers. Эта же возможность пригодится и для того, чтобы позволить разным людям действовать от одного имени.

В Ubuntu 16.04 этот файл изначально отсутствует, но его легко создать самостоятельно. Внутрь нужно поместить строку примерно следующего содержания:

где user — имя пользователя на машине с Ubuntu, того самого, для которого мы только что создали пароль, а admin и vasiliy — псевдонимы, а точнее — имена пользователей на компьютерах с Windows. Теперь при подключении Samba будет знать, что admin — это известный ей пользователь user. Как видите, псевдонимов у каждого пользователя может быть несколько, а разделяются они пробелом.

После сохранения документа отредактируйте smb.conf, добавив в секции [global]:

иначе Samba ничего не узнает о добавленных псевдонимах.

В некоторых старых руководствах указывается, что пароли и имена пользователей Samba хранятся в файле /etc/samba/smbpasswd в зашифрованном виде. Однако на данный момент по умолчанию эти данные находятся в бинарном файле /var/lib/samba/private/passdb.tdb. Способ хранения этих данных определяет параметр passdb backend, расположенный в секции [global] в /etc/samba/smb.conf. Изменение его значения на smbpasswd заставит Samba снова использовать упомянутый выше текстовый файл. Можно также указать значение ldapsam и далее, через пробел - адрес хранилища, к которому нужно подключиться с помощью LDAP.

Создание скрытой сетевой папки с ограниченным доступом.

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

Если папка еще не существует, создайте ее и убедитесь, что она доступна для записи и чтения нужным пользователям. Теперь добавим новый раздел в наш smb.conf с примерно следующим содержанием (не забудьте подставить свои данные):

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

http://192.168.0.101/my_super_secret_share

В примере выше есть несколько новых параметров:

  • read list — список пользователей, имеющих доступ только для чтения;
  • write list — пользователи, имеющие право записи;
  • valid users — ограничивает список пользователей, которые имеют право подключаться.

Таким образом, подключиться могут только user1, user2 и user3 и только при условии, что они знают о расшаренной папке, а user1 может только читать. Существует и способ запретить конкретным пользователям подключаться, для этого используйте опцию invalid users.

Если устройства в вашей сети имеют статические ip-адреса, можно указать их как разрешенные c помощью параметра hosts allow, либо, наоборот, запретить, прописав их после hosts deny.

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

В следующей статье разберем графические и веб интерфейсы для управления Samba. Подписывайтесь, чтобы ничего не пропустить.