NFS сервер с Kerberos авторизацией: различия между версиями
Дым (обсуждение | вклад) |
|||
(не показано 7 промежуточных версий 1 участника) | |||
Строка 9: | Строка 9: | ||
*обязательно наличие прямой (А) и обратной (PTR) записей для nfs-сервера и клиента — samba по умолчанию не создает обратную зону.}} | *обязательно наличие прямой (А) и обратной (PTR) записей для nfs-сервера и клиента — samba по умолчанию не создает обратную зону.}} | ||
==Настройка сервера== | ==Настройка сервера== | ||
Установить пакет | ===Установить пакет=== | ||
# apt-get install nfs-server | # apt-get install nfs-server | ||
Включить автозапуск сервиса | ===Включить автозапуск сервиса=== | ||
# systemctl enable --now nfs-server | # systemctl enable --now nfs-server | ||
В | ===В /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods)=== | ||
<source lang=ini> | <source lang=ini> | ||
[General] | [General] | ||
Строка 23: | Строка 23: | ||
GSS-Methods = nsswitch,static | GSS-Methods = nsswitch,static | ||
</source> | </source> | ||
В /etc/nfs.conf можно запретить все версии кроме 4 | ===В /etc/nfs.conf можно запретить все версии кроме 4=== | ||
<source lang=ini> | <source lang=ini> | ||
[nfsd] | [nfsd] | ||
Строка 33: | Строка 33: | ||
vers4.2=y | vers4.2=y | ||
</source> | </source> | ||
Создать шару для раздачи | ===Создать шару для раздачи=== | ||
# mkdir -p /exports/test_share/testdir | # mkdir -p /exports/test_share/testdir | ||
# chgrp 'Domain Users' /exports/test_share/ | # chgrp 'Domain Users' /exports/test_share/ | ||
# chmod g+w /exports/test_share/ | # chmod g+w /exports/test_share/ | ||
Описать её в /etc/exports | ===Описать её в /etc/exports=== | ||
/exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p) | /exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p) | ||
И экспортировать | ===И экспортировать=== | ||
# exportfs -vra | # exportfs -vra | ||
exporting *:/exports/test_share | exporting *:/exports/test_share | ||
Создать сервисную запись | ===Создать сервисную запись=== | ||
# kinit administrator@TEST.ALT | # kinit administrator@TEST.ALT | ||
# adcli update --service-name=nfs | # adcli update --service-name=nfs | ||
Перезапустить сервер nfs | ===Перезапустить сервер nfs=== | ||
# systemctl restart nfs-server | # systemctl restart nfs-server | ||
==Настройка клиента== | ==Настройка клиента== | ||
===Включить автозапуск клиента NFS=== | |||
# systemctl enable --now nfs-client.target | # systemctl enable --now nfs-client.target | ||
===Создать точку монтирования и подключиться к шаре=== | |||
# mkdir /mnt/nfs | # mkdir /mnt/nfs | ||
# mount.nfs4 -vvv -o sec=krb5:krb5i:krb5p,rw nfs-server.test.alt://exports/test_share /mnt/nfs/ | # mount.nfs4 -vvv -o sec=krb5:krb5i:krb5p,rw nfs-server.test.alt://exports/test_share /mnt/nfs/ | ||
Проверить от доменного пользователя | ===Проверить доступность от доменного пользователя=== | ||
domainuser1@alt-p10-wks / $ touch /mnt/nfs/testdir/myfile | domainuser1@alt-p10-wks / $ touch /mnt/nfs/testdir/myfile | ||
domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile | domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile | ||
-rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile | -rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile | ||
== Решение проблем == | |||
Если замечено, что служба rpc-svcgssd.service зависает либо утилизирует весь CPU, есть смысл в УЗ сервера в домене в аттрибуте userAccountControl вместо значения 0x1000 (4096), вписать 0x2001000 (33558528) - | |||
=Домен на базе FreeIPA= | =Домен на базе FreeIPA= | ||
==На DC FreeIPA== | ==На DC FreeIPA== | ||
Добавить сервис, где имя нашего nfs-сервера — nfs.example.test | ===Добавить сервис, где имя нашего nfs-сервера — nfs.example.test=== | ||
# kinit admin | # kinit admin | ||
# ipa service-add nfs/nfs.example.test | # ipa service-add nfs/nfs.example.test | ||
Создать пользователя и группу для доступа к nfs | ===Создать пользователя и группу для доступа к nfs=== | ||
# echo 1 | ipa user-add test01 --first test --last 01 --password | # echo 1 | ipa user-add test01 --first test --last 01 --password | ||
# ipa group-add nfs_users --desc="NFS users" | # ipa group-add nfs_users --desc="NFS users" | ||
# ipa group-add-member nfs_users --users=test01 | # ipa group-add-member nfs_users --users=test01 | ||
==На сервере NFS== | ==На введённом в домен сервере NFS== | ||
Сгенерировать таблицу ключей службы и сохранить в keytab | ===Установить сервис=== | ||
# apt-get install nfs-server | |||
===Включить SECURE_NFS=== | |||
# echo 'SECURE_NFS=yes' >>/etc/sysconfig/nfs | |||
===Сгенерировать таблицу ключей службы и сохранить в keytab=== | |||
# kinit admin | # kinit admin | ||
# ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab | # ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab | ||
# klist -ket /etc/krb5.keytab | # klist -ket /etc/krb5.keytab | ||
Создать каталог с групповыми правами на запись | ===Создать каталог с групповыми правами на запись=== | ||
# install -g nfs_users -m 774 -d /exports/test_share/testdir | # install -g nfs_users -m 774 -d /exports/test_share/testdir | ||
Добавить список экспорта | ===Добавить список экспорта=== | ||
# echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports | # echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports | ||
# exportfs -vra | # exportfs -vra | ||
Применить изменения | ===Включить автозапуск сервиса=== | ||
# systemctl enable nfs-server | |||
===Применить изменения=== | |||
# systemctl restart nfs-server | # systemctl restart nfs-server | ||
==На введённом в домен клиенте== | ==На введённом в домен клиенте== | ||
Включить автозагрузку клиента nfs | ===Включить автозагрузку клиента nfs=== | ||
# systemctl enable --now nfs-client.target | # systemctl enable --now nfs-client.target | ||
Проверить доступность ресурса | ===Проверить доступность ресурса=== | ||
# showmount -e nfs.example.test | # showmount -e nfs.example.test | ||
Создать и смонтировать каталог nfs | ===Создать и смонтировать каталог nfs=== | ||
# mkdir /mnt/test_share | # mkdir /mnt/test_share | ||
# mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share | # mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share | ||
Добавить его в fstab | ===Добавить его в fstab=== | ||
# cat >> /etc/fstab << EOF | # cat >> /etc/fstab << EOF | ||
nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0 | nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0 | ||
EOF | EOF | ||
===Проверить доступность от доменного пользователя.=== | |||
[[Категория:FileSystems]] | [[Категория:FileSystems]] | ||
[[Категория:Домен]] | [[Категория:Домен]] |
Текущая версия от 07:22, 23 августа 2024
Домен на базе Samba DC
Исходные данные стенда
- Домен test.alt (АльтСервер 10.1, dc.test.alt)
- NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен
- NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен
Настройка сервера
Установить пакет
# apt-get install nfs-server
Включить автозапуск сервиса
# systemctl enable --now nfs-server
В /etc/idmapd.conf определить домен (realm) и методы (GSS-Methods)
[General]
Domain = test.alt
Local-Realms = TEST.ALT
[Translation]
Method = nsswitch,static
GSS-Methods = nsswitch,static
В /etc/nfs.conf можно запретить все версии кроме 4
[nfsd]
vers2=n
vers3=n
vers4=y
vers4.0=y
vers4.1=y
vers4.2=y
Создать шару для раздачи
# mkdir -p /exports/test_share/testdir # chgrp 'Domain Users' /exports/test_share/ # chmod g+w /exports/test_share/
Описать её в /etc/exports
/exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p)
И экспортировать
# exportfs -vra exporting *:/exports/test_share
Создать сервисную запись
# kinit administrator@TEST.ALT # adcli update --service-name=nfs
Перезапустить сервер nfs
# systemctl restart nfs-server
Настройка клиента
Включить автозапуск клиента NFS
# systemctl enable --now nfs-client.target
Создать точку монтирования и подключиться к шаре
# mkdir /mnt/nfs # mount.nfs4 -vvv -o sec=krb5:krb5i:krb5p,rw nfs-server.test.alt://exports/test_share /mnt/nfs/
Проверить доступность от доменного пользователя
domainuser1@alt-p10-wks / $ touch /mnt/nfs/testdir/myfile domainuser1@alt-p10-wks / $ ll /mnt/nfs/testdir/myfile -rw-r--r-- 1 domainuser1 domain users 0 сен 15 17:26 /mnt/nfs/testdir/myfile
Решение проблем
Если замечено, что служба rpc-svcgssd.service зависает либо утилизирует весь CPU, есть смысл в УЗ сервера в домене в аттрибуте userAccountControl вместо значения 0x1000 (4096), вписать 0x2001000 (33558528) -
Домен на базе FreeIPA
На DC FreeIPA
Добавить сервис, где имя нашего nfs-сервера — nfs.example.test
# kinit admin # ipa service-add nfs/nfs.example.test
Создать пользователя и группу для доступа к nfs
# echo 1 | ipa user-add test01 --first test --last 01 --password # ipa group-add nfs_users --desc="NFS users" # ipa group-add-member nfs_users --users=test01
На введённом в домен сервере NFS
Установить сервис
# apt-get install nfs-server
Включить SECURE_NFS
# echo 'SECURE_NFS=yes' >>/etc/sysconfig/nfs
Сгенерировать таблицу ключей службы и сохранить в keytab
# kinit admin # ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab # klist -ket /etc/krb5.keytab
Создать каталог с групповыми правами на запись
# install -g nfs_users -m 774 -d /exports/test_share/testdir
Добавить список экспорта
# echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports # exportfs -vra
Включить автозапуск сервиса
# systemctl enable nfs-server
Применить изменения
# systemctl restart nfs-server
На введённом в домен клиенте
Включить автозагрузку клиента nfs
# systemctl enable --now nfs-client.target
Проверить доступность ресурса
# showmount -e nfs.example.test
Создать и смонтировать каталог nfs
# mkdir /mnt/test_share # mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share
Добавить его в fstab
# cat >> /etc/fstab << EOF nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0 EOF