Описание стенда
- контроллер домена FreeIPA:
- имя сервера ipa0.ipadomain0.ru;
- имя администратора admin;
- клиент домена
Настройка сервера
См. также статью NFS
Установить пакет nfs-kernel-server:
sudo apt install nfs-kernel-serverИсправить порядок запуска служб после перезагрузки, добавив в файл /etc/systemd/system/multi-user.target.wants/nfs-server.service в секцию [Unit] строки:
[Unit]Команды:
After=rpcbind.service
Requires=rpcbind.servicesudo sed -i "s/\[Unit\]/[Unit]\nAfter=rpcbind.service/" /etc/systemd/system/multi-user.target.wants/nfs-server.service
sudo sed -i "s/\[Unit\]/[Unit]\nRequires=rpcbind.service/" /etc/systemd/system/multi-user.target.wants/nfs-server.serviceУстранить ошибки сосздания БД nfs/nfsdcltrack. Команды (первый запуск команды sudo nfsdcltrack -d init при этом завершится ошибкой):
sudo mkdir -p /var/lib/nfs/nfsdcltrack
sudo chmod 755 /var/lib/nfs/nfsdcltrack
sudo nfsdcltrack -d init
sudo chmod 660 /var/lib/nfs/nfsdcltrack/main.sqlite
sudo chown statd /var/lib/nfs/nfsdcltrack/main.sqlite
sudo nfsdcltrack -d initВключить запуск всех служб, необходимых для авторизации Kerberos:
sudo sed -i 's/^[[:space:]]*NEED_GSSD[[:space:]]*=.*/NEED_GSSD=yes/' /etc/default/nfs-common
sudo sed -i 's/^[[:space:]]*NEED_IDMAPD[[:space:]]*=.*/NEED_IDMAPD=yes/' /etc/default/nfs-common
sudo sed -i 's/^[[:space:]]*RPCGSSDOPTS[[:space:]]*=.*/RPCGSSDOPTS="-vvvv"/' /etc/default/common
sudo sed -i 's/^[[:space:]]*NEED_SVCGSSD[[:space:]]*=.*/NEED_SVCGSSD="yes"/' /etc/default/nfs-kernel-server
sudo sed -i 's/^[[:space:]]*RPCSVSGSSDOPTS[[:space:]]*=.*/RPCCSVSGSSDOPTS="-vvvv"/' /etc/default/nfs-kernel-serverЗарегистрировать службу nfs/ipa0.ipadomain0.ru@IPADOMAIN0.RU в домене и получить соответствующую запись в таблицу ключей:
kinit admin
ipa service-add nfs/ipa0.ipadomain0.ru@IPADOMAIN0.RU
sudo kinit admin
sudo ipa-getkeytab -s ipa0.ipadomain0.ru -p nfs/ipa0.ipadomain0.ru@IPADOMAIN0.RU -k /etc/krb5.keytab- Опционально:
- Разрешить слабые защитные алгоритмы для старых клиентов, добавив запись allow_weak_crypto = true в секцию [libdefaults] файла /etc/krb5.conf;
Добавить защитные алгоритмы в каталог домена (12345678 - пароль администратора каталога):
ldapmodify -x -D "cn=directory manager" -w 12345678 -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
changetype: modify
add: krbSupportedEncSaltTypes
krbSupportedEncSaltTypes: des-cbc-crc:normal
EOT
ldapmodify -x -D "cn=directory manager" -w 12345678 -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
add: krbSupportedEncSaltTypes
krbSupportedEncSaltTypes: des-cbc-crc:special
EOT
ldapmodify -x -D "cn=directory manager" -w 12345678 -h ipa0.ipadomain0.ru << EOT
dn: cn=IPADOMAIN0.RU,cn=kerberos,dc=ipadomain0,dc=ru
add: krbDefaultEncSaltTypes
krbDefaultEncSaltTypes: des-cbc-crc:special
EOT
- Разрешить слабые защитные алгоритмы для старых клиентов, добавив запись allow_weak_crypto = true в секцию [libdefaults] файла /etc/krb5.conf;
Перезапустить службы:
sudo systemctl daemon-reload
sudo systemctl restart nfs-kernel-serverСоздать разделяемый ресурс.
Подробно про возможные параметры разделяемых ресурсов см. man exports.В NFSv4 все сетевые ресурсы предоставлены единым деревом каталогов. Соответственно, в списке разделяемых ресурсов один из них должен быть обозначен как корневой. Для этого используется параметр fsid=0Пример файла с ресурсами:
/ *(ro,fsid=0,no_subtree_check) /home gss/krb5i(rw,sync,no_subtree_check) /export *(rw,sync,no_subtree_check,no_root_squash,sec=krb5:krb5i:krb5p)
В приведённом примере первый ресурс - корневой, и использованы два альтернативных синтаксиса для ресурсов NFSv4 с авторизацией Kerberos.
Экспортировать ресурс:
sudo exportfs -raПроверить, что ресурсы экспортированы успешно:
showmount -e `hostname`
Export list for ipa0.ipadomain0.ru:
/home gss/krb5i
/export *
/ *