- Введение
- Исходные данные
- Настройка сервера
- Подготовка
- Корректировка настроек пакета
- Конфигурация
- Экспорт разделяемого ресурса
- Безопасный экспорт разделяемых ресурсов
- Настройка клиента
- Монтируем ресурс
- Автоматическое монтирование ресурса при загрузке
- Автоматическое монтирование ресурса по запросу
- Решение проблемы зависания графических приложений
- Настройка NFS в Ubuntu
- Немного теории
- Установка компонентов NFS
- Настройка сервера NFS в Ubuntu
- Подключение NFS
- Выводы
Введение
Защищенной сетевой файловой системой для работы с информацией ограниченного доступа в Astra Linux Special Edition является Samba SMB/CIFS.
При работе в Astra Linux Special Edition с включенной политикой мандатного управления доступом (МРД) и обработкой информации ограниченного доступа применять сетевую файловую систему NFS для хранения данных в общем случае не рекомендуется.
NFS (сокращение от Network File System, Сетевая Файловая Система) — сервис, обеспечивающий общий доступ к файлам и каталогам систем *nix / Linux. Файловая система NFS позволяет монтировать удалённые разделяемые файлы подобно локальным. Существует в двух вариантах:
- вариант nfs-kernel -server , работающий на уровне ядра (входит в состав Astra Linux)
- и вариант работающий на уровне пользовательских программ (в состав Astra Linux не входит)
В Astra Linux Special Edition для того, чтобы включить NFS v2, нужно добавить опцию «-V 2» в две переменные в файле /etc/default/nfs-kernel-server (второй переменной по умолчанию нет, её надо создавать):
Исходные данные
Пакеты nfs-kernel-server (сервер) и nfs-common (клиент) входят в стандартный дистрибутив Astra Linux Special Edition, и доступны в сетевом репозитории Astra Linux Common Edition. Поддержка файловой системы NFS интегрирована в ядро всех ОС Astra Linux.
По умолчанию пакет nfs-kernel-server не устанавливается. Установить сервер nfs и клиент nfs-common можно из графического менеджера пакетов (см. Графический менеджер пакетов synaptic) , или из командной строки.
При установке пакетов для работы с файловой системой NFS будет автоматически установлена служба rpcbind. Использование службы rpcbind несовместимо с работой на ненулевых уровнях конфиденциальности. Для работы с включенным МРД на ненулевых уровнях конфиденциальности следует использовать рекомендованную сетевую файловую систему Samba SMB/CIFS.
Установка сервера из командной строки:
Дополнительно, можно установить пакет «монтирования ресурсов NFS по запросу», позволяющий монтировать ресурсы только при обращениях к ним, см. Autofs монтирование по запросу.
Настройка сервера
Подготовка
Для развёртывания сервера NFS, как и любого другого сервера:
- рекомендуется назначить серверу постоянный IP-адрес;
- настроить разрешение имён клиентских компьютеров, или назначить им статические IP-адреса;
- выделить ресурс (каталог), который в дальнейшем станет разделяемым. Пример: создание каталога /srv/nfsshare и задание для него полного доступа на чтение и запись:
Корректировка настроек пакета
При работе в операционных системах Astra Linux, выпущенных ранее очередного обновления x.7, для нормального автоматического запуска службы nfs-kernel-server после перезагрузки компьютера внести изменения в его UNIT-файл /etc/systemd/system/multi-user.target.wants/nfs-server.service добавив следующие строки в секцию unit:
Указанные исправления обеспечат запуск службы nfs-server после службы rpcbind. После внесения изменений перезапустить службу:
При работе в Astra Linux Special Edition очередное обновление x.7 указанные действия не требуются.
Конфигурация
Основная конфигурация сервиса nfs хранится в файле /etc/exports . Кроме этого файла сервис использует файлы:
- /etc/fstab — записи обо всех файловых системах, включая nfs, автоматически монтируемых при загрузке системы.
- /etc/hosts.allow , /etc/hosts.deny — используется, чтобы решить, принять или отклонить подключения, приходящие с внешних IP-адресов
Экспорт разделяемого ресурса
Для экспорта созданного ранее разделяемого ресурса (каталога) /srv/nfsshare добавить в конфигурационный файл /etc/exports строку
- — постоянный IP-адрес компьютера-клиента (может быть использовано имя компьютера), или, для указания группы компьютеров, можно использовать адрес сети или подстановочный знак «*» (подробнее см. справку man exports);
Строк с записями о разделяемых ресурсах может быть добавлено несколько. После внесения изменений для того, чтобы они вступили в силу, нужно выполнить команду
Безопасный экспорт разделяемых ресурсов
- Протокол передачи данных NFS поддерживает защитное преобразование данных начиная с версии 4 (NFSv4).
А следующая строка файла/etc/exports, напротив, определяет для того же каталога компьютеру master.astralinux.ru разрешение только на чтение, а всем остальным разрешает не только чтение, но и запись
Отличие конфигураций состоит всего в одном пробеле после имени компьютера :
Чтобы избежать подобных ошибок,
проверяйте все настроенные общие ресурсы NFS с помощью команды showmount:
- Не рекомендуется использование параметра no_root_squash, так как потенциально создает угрозы безопасности, связанные с возможностью удаленного внедрения в файловую систему вредоносного ПО. По умолчанию, в общих ресурсах NFS пользователь root становится обычным пользователем nfsnobody. Таким образом, владельцем всех файлов, созданных root, становится пользователь nfsnobody, что предотвращает загрузку на сервер программ с установленным битом setuid.
Настройка клиента
После установки клиентского пакета nfs-common, на компьютере — клиенте следует примонтировать разделяемые ресурсы. Список доступных ресурсов можно проверить, выполнив команду:
sudo showmount -e 192.168.1.10
Export list for 192.168.1.10:
/srv/nfsshare 192.168.1.20
Монтируем ресурс
Чтобы примонтировать разделяемый ресурс на клиентской машине:
- Создать на клиентской машине точку монтирования, например, каталог /mnt/share:
Команда выдаст строку (строки) с информацией о примонтированном ресурсе (ресурсах). Кроме того, можно использовать команду проверки свободного места на всех примонтированных ресурсах:
Автоматическое монтирование ресурса при загрузке
Чтобы ресурс NFS монтировался автоматически при перезагрузки ОС, его нужно зарегистрировать в файле /etc/fstab добавив строчку вида
Автоматическое монтирование ресурса по запросу
Автоматическое монтирование ресурсов NFS можно выполнить с помощью пакета autofs.
Решение проблемы зависания графических приложений
При работе в сессии с ненулевой классификационной меткой с одновременным использованием файловых систем NFS и Samba возможна нештатная работа графических приложений. Нарушение работы приложения может проявляться, например, «в зависаниях» текстового редактора kate, и вызвано несовместимостью службы rpcbind с работой КСЗ Astra Linux Special Edition. Д ля устранения нарушений работы следует остановить и запретить службу rpcbind:
Для находящихся в эксплуатации систем Astra Linux следует использовать рекомендованную для работы с информацией ограниченного доступа сетевую файловую систему Samba SMB/CIFS.
Настройка NFS в Ubuntu
Сетевая файловая система NFS или Network File System, это популярный протокол сетевой файловой системы, который позволяет пользователям подключать удаленные сетевые каталоги на своей машине и передавать файлы между серверами. Вы можете использовать дисковое пространство на другой машине для своих файлов и работать с файлами, расположенными на других серверах. По сути, это альтернатива общего доступа Windows для Linux, в отличие от Samba реализована на уровне ядра и работает более стабильно.
В этой статье будет рассмотрена установка NFS в Ubuntu. Мы разберем установку всех необходимых компонентов, настройку общей папки, а также подключение сетевых папок.
Немного теории
Как уже было сказано, NFS, это сетевая файловая система. Для работы необходим сервер, на котором будет размещена общая папка и клиенты, которые могут монтировать сетевую папку как обычный диск в системе. В отличие от других протоколов NFS предоставляет прозрачный доступ к удаленным файлам. Программы будут видеть файлы как в обычной файловой системе и работать с ними как с локальными файлами, nfs возвращает только запрашиваемую часть файла, вместо файла целиком, поэтому эта файловая система будет отлично работать в системах с быстрым интернетом или в локальной сети.
Установка компонентов NFS
Перед тем как мы сможем работать с NFS, нам придется установить несколько программ. На машину, которая будет сервером нужно установить пакет nfs-kernel-server, с помощью которого будет выполнено открытие шары nfs в ubuntu 16.04. Для этого выполните:
sudo apt install nfs-kernel-server
Теперь давайте проверим правильно ли установился сервер. Сервис NFS слушает соединения как для TCP, так и для UDP на порту 2049. Посмотреть действительно ли сейчас используются эти порты можно командой:
Также важно проверить поддерживается ли NFS на уровне ядра:
cat /proc/filesystems | grep nfs
Видим, что работает, но если нет, нужно вручную загрузить модуль ядра nfs:
Давайте еще добавим NFS в автозагрузку:
sudo systemctl enable nfs-server
На клиентском компьютере вам нужно установить пакет nfs-common, чтобы иметь возможность работать с этой файловой системой. Вам необязательно устанавливать компоненты сервера, достаточно будет только этого пакета:
sudo apt install nfs-common
Вот и все, дальше настройка NFS в Ubuntu.
Настройка сервера NFS в Ubuntu
Мы можем открыть NFS доступ к любой папке, но давайте создадим для этих целей новую:
Дальше нас интересует настройка ubuntu nfs server. Все общие папки и другие настройки nfs находятся в файле /etc/exports. Синтаксис записи папки такой:
адрес_папки клиент (опции)
Адрес папки — это та папка, которую нужно сделать доступной по сети. Клиент — ip адрес или адрес сети, из которой могут получить доступ к этой папке. А вот с опциями немного сложнее. Рассмотрим некоторые из них:
- rw — разрешить чтение и запись в этой папке;
- ro — разрешить только чтение;
- sync — отвечать на следующие запросы только тогда, когда данные будут сохранены на диск (по умолчанию);
- async — не блокировать подключения пока данные записываются на диск;
- secure — использовать для соединения только порты ниже 1024;
- insecure — использовать любые порты;
- nohide — не скрывать поддиректории при, открытии доступа к нескольким директориям;
- root_squash — подменять запросы от root на анонимные, используется по умолчанию;
- no_root_squash — не подменять запросы от root на анонимные;
- all_squash — превращать все запросы в анонимные;
- subtree_check — проверять не пытается ли пользователь выйти за пределы экспортированной папки;
- no_subtree_check — отключить проверку обращения к экспортированной папке, улучшает производительность, но снижает безопасность, можно использовать когда экспортируется раздел диска;
- anonuid и anongid — указывает uid и gid для анонимного пользователя.
Например, для нашей папки, если вы хотите разрешить к ней подключаться только с определённого IP адреса, эта строка может выглядеть вот так:
Можно разрешить только нужную подсеть, например:
Для того чтобы разрешить все адреса используйте подсеть 0.0.0.0/0 или символ *.
Открытие шары NFS в Ubuntu почти завершено. Осталось разобраться с правами. Кроме ограничений IP адреса работает обычная система полномочий UNIX, поэтому если вы хотите чтобы определённый пользователь мог получить доступ к папке, то на сервере должен существовать пользователь с таким же UID и эта папка должна принадлежать ему или группе в которой он состоит.
Кроме того, обратите внимание на то, что все подключения от имени пользователя root считаются по умолчанию анонимными (nfsnobody), чтобы это отключить добавьте опцию монтирования no_root_squash, но это не безопасно, потому что любой root пользователь сможет получить доступ на запись ко всем файлам. Теперь попытаемся настроем клиента и попытаемся ее примонтировать.
Для того чтобы все пользователи могли получить доступ ко всем файлам можно создать пользователя с UID 1001 и попросить NFS все запросы считать запросами от анонимного пользователя, а анонимному пользователю присвоить UID 1001. Это делается такими опциями:
Когда все будет настроено, останется только обновить таблицу экспорта NFS:
Если на вашем сервере используется брандмауэр, то следует открыть порты 111 и 2049:
sudo ufw allow 111
sudo ufw allow 2049
Подключение NFS
Мы не будем подробно останавливаться на этом вопросе в сегодняшней статье. Это довольно большая тема, заслуживающая отдельной статьи. Но пару слов я все же скажу. Чтобы подключить сетевую папку вам не нужен никакой nfs клиент ubuntu, достаточно использовать команду mount:
sudo mount 127.0.0.1:/var/nfs/ /mnt/
Теперь вы можете попытаться создать файл в подключенной директории:
Также мы посмотрите подключенные файловые системы с помощью df:
127.0.0.1:/var/nfs 30G 6,7G 22G 24% /mnt
Чтобы отключить эту файловую систему достаточно использовать стандартный umount:
Выводы
В этой статье была рассмотрена настройка NFS в Ubuntu 20.04, как видите, все делается очень просто и прозрачно. Подключение NFS шары выполняется в несколько кликов, с помощью стандартных команд, а открытие шары NFS ненамного сложнее подключения. Если у вас остались вопросы, пишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.