Подключение NFS для чтения и записи обычным пользователем

Когда на NFS-сервере один основной пользователь и на компьютере, который выступает в роле NFS-клиента, тоже один пользователь, да ещё и входящий в список sudousers — всё просто: NFS-раздел подключается, используя sudo, UID и GID на NFS-сервере и NFS-клиенте совпадают, с правами на чтение и запись нет никаких проблем.

У меня же возникла ситуация, когда на NFS-клиенте был обычный пользователь (regular user) без доступа к sudo и он должен был уметь производить чтение и запись в подлючённом NFS-разделе. Назовём этого пользователя reguser. Также на этом компьютере ( NFS-клиенте ) был ещё один пользователь, который имел доступ к sudo. Назовём его: admuser.

Итак, передо мной стояло две задачи:

  1. Сделать так, чтобы reguser мог производить запись в файлы и директории на NFS-сервере.
  2. Сделать так, чтобы reguser мог сам подключать и отключать NFS-раздел.

Как разрешить запись на NFS-сервере пользователям с NFS-клиента, у который отличается UID от UID пользователя, которому принадлежат файлы на NFS-сервере

Действия выполняются на NFS-сервере от пользователя root.
Редактируем /etc/exports:
nano /etc/exports
Вставляем или изменяем строку, которая говорит о том, какая директория будет доступна (экспортирована) по NFS:

/home/nfs 192.168.1.1/24(rw,async,no_subtree_check,all_squash,anonuid=1000,anongid=1000)

где:

  • /home/nfs — директория, которая будет доступна (экспортирована) NFS-клиенту;
  • 192.168.1.1/24 — IP-адрес или, как в данном случае, диапазон адресов, с которых разрешено подключаться к NFS;
  • rw — разрешение на чтение и запись;
  • async — асинхронный режим работы, в котором ответы на запросы будут происходят сразу, не дожидаясь записи на диск. В этом случае надежность ниже, однако, производительность больше;
  • no_subtree_check — при разрешение доступа к подкаталогу файловой системы, а не всей файловой системе, сервер проверяет, находится ли запрошенный файл в экспортированном подкаталоге или нет. no_subtree_check отключает эту проверку, что уменьшает безопасность, однако, увеличивает скорость передачи данных;
  • all_squash — эта опция отвечает за то, что любые пользователи NFS-клиента будут считаться анонимными на NFS-сервере или же тем пользователеми NFS-сервера, чьи идентификаторы указаны в anonuid и anongid;
  • anonuid — идентификатор пользователя ОС на NFS-сервере. Берётся из /etc/passwd . Например, если нужен первый несистемный пользователь (тот, логин которого указывался при установке ОС, в моём случае nfs) и в файле /etc/passwd есть строка «nfs:x:1000:1000:NFS:/home/nfs:/bin/bash» значение для anonuid будет первое число 1000;
  • anongid — идентификатор группы ОС на NFS-сервере. Берётся из /etc/group . Например, если нужна группа www-data и в файле /etc/group есть строка «www-data:x:33:» значение для anongid будет 33;

Если нужно более точно указать какие пользователи на NFS-клиенте соответствуют пользователям на NFS-сервере, то можно включить маппинг пользователей, добавив опцию map_static=/etc/file_maps_users. Файл /etc/file_maps_users должен выглядеть следующим образом:

# Маппинг пользователей
# remote local comment
uid 0-33 1002 # сопоставление пользователей с удаленным UID 0-50 к локальному UID 1002
gid 0-33 1002 # сопоставление пользователей с удаленным GID 0-50 к локальному GID 1002

Перезапускаем демона nfs и на этом настройка сервера завершена:
/etc/init.d/nfs-kernel-server restart

Как разрешить обычному пользователю (regular user) подключать и отключать NFS-раздел

Авторизуемся как admuser.

Создаём директорию, в которую будем производить монтирование:
sudo mkdir /media/nfs

Добавляем в /etc/fstab правило монтирования. Открываем файл:
sudo nano /etc/fstab
Добавляем правило:
192.168.1.50:/home/nfs /media/nfs nfs rw,noauto,user 0 0
где:

  • 192.168.1.50 — IP-адрес NFS-сервера;
  • /home/nfs — каталог на NFS-сервере, который монтируем. Он должен быть в списке /etc/exports на NFS-сервере;
  • /media/nfs — каталог на NFS-клиенте, в который монтируем NFS-раздел;
  • nfs — тип файловой системы;
  • rw — с правом на запись;
  • noauto — опция, указывающая, что раздел не нужно монтировать автоматически при загрузке;
  • user — опция, разрешающая монтировать и размонтировать этот раздел любому пользователю.

Теперь можно авторизоваться как reguser и создать в его домашнем каталоге два файла.
Для подключения NFS:
nano ~/nfs.mount
С кодом:
#!/bin/bash
mount /media/nfs

Для отключения NFS:
nano ~/nfs.umount
С кодом:
#!/bin/bash
umount /media/nfs

Разрешаем скриптам исполняться:
chmod ug+x ~/nfs.mount ~/nfs.umount

И, наконец, подключение NFS-ресурса:
~/nfs.mount

Отключение NFS-ресурса:
~/nfs.umount

Всё, все задачи выполнены.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Материалы распространяются под лицензией Creative Commons: Атрибуция — Некоммерческое использование — С сохранением условий (Attribution-NonCommercial-ShareAlike) 3.0 Unported.
Рейтинг@Mail.ru