NFS сервер с Kerberos авторизацией: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
__TOC__ | __TOC__ | ||
=Домен на базе Samba DC= | |||
Исходные данные стенда | Исходные данные стенда | ||
* Домен test.alt (АльтСервер 10.1, dc.test.alt) | * Домен test.alt (АльтСервер 10.1, dc.test.alt) | ||
* NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен | * NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен | ||
* NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен | * NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен | ||
{{Внимание| | {{Внимание| | ||
*обязательна синхронизация времени на всех хостах; | *обязательна синхронизация времени на всех хостах; | ||
*обязательно наличие прямой (А) и обратной (PTR) записей для nfs сервера и клиента — samba по умолчанию не создает обратную зону.}} | *обязательно наличие прямой (А) и обратной (PTR) записей для nfs сервера и клиента — samba по умолчанию не создает обратную зону.}} | ||
==Конфигурация nfs-сервера== | |||
Установить пакет: {{cmd|# apt-get install nfs-server}} | Установить пакет: {{cmd|# apt-get install nfs-server}} | ||
Строка 51: | Строка 48: | ||
# adcli update --service-name=nfs | # adcli update --service-name=nfs | ||
# systemctl restart nfs-server | # systemctl restart nfs-server | ||
==Настройка клиента== | |||
# 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 | ||
=Домен на базе FreeIPA= | |||
На сервере, введенном в домен FreeIPA, установим nfs-server: | На сервере, введенном в домен FreeIPA, установим nfs-server: | ||
# apt-get install nfs-server | # apt-get install nfs-server | ||
Включим SECURE_NFS: | Включим SECURE_NFS: | ||
# echo 'SECURE_NFS=yes' >> /etc/sysconfig/nfs | # echo 'SECURE_NFS=yes' >> /etc/sysconfig/nfs | ||
Добавим сервис в автозапуск: | Добавим сервис в автозапуск: | ||
# systemctl enable --now nfs-server | # systemctl enable --now nfs-server | ||
На DC FreeIPA сервере добавить сервис где nfs.example.test наш nfs сервер: | На DC FreeIPA сервере добавить сервис где nfs.example.test наш nfs сервер: | ||
# kinit admin | # kinit admin | ||
# ipa service-add nfs/nfs.example.test | # ipa service-add nfs/nfs.example.test | ||
На DC FreeIPA сервере создадим пользователя и группу для доступа на nfs: | На DC FreeIPA сервере создадим пользователя и группу для доступа на 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: | |||
На NFS | |||
# 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 | ||
На NFS создадим каталог, дадим права на запись группе, добавим список экспорта и применим изменения: | На NFS создадим каталог, дадим права на запись группе, добавим список экспорта и применим изменения: | ||
# mkdir -p /exports/test_share/testdir | # mkdir -p /exports/test_share/testdir | ||
# chgrp nfs_users /exports/test_share/testdir | # chgrp nfs_users /exports/test_share/testdir | ||
Строка 102: | Строка 81: | ||
# exportfs -vra | # exportfs -vra | ||
# systemctl restart nfs-server | # systemctl restart nfs-server | ||
На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса: | На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса: | ||
# systemctl enable --now nfs-client.target | # systemctl enable --now nfs-client.target | ||
# showmount -e nfs.example.test | # showmount -e nfs.example.test | ||
Создадим каталог и смонтируем nfs, добавим запись в fstab: | Создадим каталог и смонтируем nfs, добавим запись в fstab: | ||
# 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 | ||
Строка 115: | Строка 90: | ||
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 | ||
Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir. | Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir. | ||
[[Категория:FileSystems]] | [[Категория:FileSystems]] | ||
[[Категория:Домен]] | [[Категория:Домен]] |
Версия от 06:34, 1 октября 2023
Домен на базе Samba DC
Исходные данные стенда
- Домен test.alt (АльтСервер 10.1, dc.test.alt)
- NFS сервер (Альт Сервер 10.1, nfs-server.test.alt) - включен в домен
- NFS клиент (Альт Рабочая станция 10.1, nfs-client.test.alt) - включен в домен
Конфигурация nfs-сервера
Установить пакет: # 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:
# cat /etc/exports /exports/test_share *(rw,sync,no_subtree_check,sec=krb5:krb5i:krb5p)
И экспортировать:
# exportfs -vra exporting *:/exports/test_share
Создать сервисную запись и запустить nfs сервер:
# kinit administrator@TEST.ALT # adcli update --service-name=nfs # systemctl restart nfs-server
Настройка клиента
# 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
Домен на базе FreeIPA
На сервере, введенном в домен FreeIPA, установим nfs-server:
# apt-get install nfs-server
Включим SECURE_NFS:
# echo 'SECURE_NFS=yes' >> /etc/sysconfig/nfs
Добавим сервис в автозапуск:
# systemctl enable --now nfs-server
На DC FreeIPA сервере добавить сервис где nfs.example.test наш nfs сервер:
# kinit admin # ipa service-add nfs/nfs.example.test
На DC FreeIPA сервере создадим пользователя и группу для доступа на 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 сгенерируем таблицу ключей службы NFS для сервера и сохраним в keytab:
# kinit admin # ipa-getkeytab -s ipaserver.example.test -p nfs/nfs.example.test -k /etc/krb5.keytab # klist -ket /etc/krb5.keytab
На NFS создадим каталог, дадим права на запись группе, добавим список экспорта и применим изменения:
# mkdir -p /exports/test_share/testdir # chgrp nfs_users /exports/test_share/testdir # chmod 774 /exports/test_share/testdir # echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >> /etc/exports # exportfs -vra # systemctl restart nfs-server
На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса:
# systemctl enable --now nfs-client.target # showmount -e nfs.example.test
Создадим каталог и смонтируем nfs, добавим запись в fstab:
# mkdir /mnt/test_share # mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share # cat >> /etc/fstab << EOF nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0 EOF
Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir.