NFS сервер с Kerberos авторизацией: различия между версиями

Материал из ALT Linux Wiki
Строка 58: Строка 58:


=Домен на базе FreeIPA=
=Домен на базе FreeIPA=
На сервере, введенном в домен FreeIPA, установим nfs-server:
Установить на введенном в домен сервере сервис nfs: {{cmd|# apt-get install nfs-server}}
    # apt-get install nfs-server  
Включить SECURE_NFS: {{cmd|# echo 'SECURE_NFS=yes' >>/etc/sysconfig/nfs}}
Включим SECURE_NFS:
Включить автозапуск сервиса: {{cmd|# systemctl enable --now nfs-server}}
    # echo 'SECURE_NFS=yes' >> /etc/sysconfig/nfs
==На DC FreeIPA==
Добавим сервис в автозапуск:
Добавить сервис, где имя нашего nfs-сервера — nfs.example.test:
    # systemctl enable --now nfs-server
# kinit admin
На DC FreeIPA сервере добавить сервис где nfs.example.test наш nfs сервер:
# ipa service-add nfs/nfs.example.test
    # kinit admin
Создать пользователя и группу для доступа к nfs:
    # ipa service-add nfs/nfs.example.test
# echo 1 | ipa user-add test01 --first test --last 01 --password
На DC FreeIPA сервере создадим пользователя и группу для доступа на nfs:
# ipa group-add nfs_users --desc="NFS users"
    # echo 1 | ipa user-add test01 --first test --last 01 --password
# ipa group-add-member nfs_users --users=test01
    # ipa group-add nfs_users --desc="NFS users"
==На сервере NFS==
    # ipa group-add-member nfs_users --users=test01
Сгенерировать таблицу ключей службы и сохранить в keytab:
На сервере NFS сгенерируем таблицу ключей службы 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
Создать каталог с групповыми правами на запись:
На NFS создадим каталог, дадим права на запись группе, добавим список экспорта и применим изменения:
# install -g nfs_users -m 774 -d /exports/test_share/testdir
    # mkdir -p /exports/test_share/testdir
Добавить список экспорта:
    # chgrp nfs_users /exports/test_share/testdir
# echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >>/etc/exports
    # chmod 774 /exports/test_share/testdir
# exportfs -vra
    # echo '/exports/test_share *(rw,no_subtree_check,sec=krb5:krb5i:krb5p)' >> /etc/exports
Применить изменения:
    # exportfs -vra
# systemctl restart nfs-server
    # systemctl restart nfs-server
==На введённом в домен клиенте==
На клиенте, введенном в домен FreeIPA, добавим в автозагрузку nfs-client и проверим доступность ресурса:
Включить автозагрузку клиента nfs:
    # systemctl enable --now nfs-client.target
# systemctl enable --now nfs-client.target
    # showmount -e nfs.example.test
Проверить доступность ресурса:
Создадим каталог и смонтируем nfs, добавим запись в fstab:
# showmount -e nfs.example.test
    # mkdir /mnt/test_share
Создать и смонтировать каталог nfs:
    # mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share
# mkdir /mnt/test_share
    # cat >> /etc/fstab << EOF
# mount -o sec=krb5:krb5i:krb5p,rw nfs.example.test://exports/test_share /mnt/test_share
    nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0
Добавить его в fstab:
    EOF
# cat >> /etc/fstab << EOF
nfs.example.test:/exports/test_share /mnt/test_share nfs rw,sec=krb5:krb5i:krb5p,nolock 1 0
EOF
Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir.
Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir.
[[Категория:FileSystems]]
[[Категория:FileSystems]]
[[Категория:Домен]]
[[Категория:Домен]]

Версия от 06:52, 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) - включен в домен
Внимание:
  • обязательна синхронизация времени на всех хостах;
  • обязательно наличие прямой (А) и обратной (PTR) записей для nfs-сервера и клиента — samba по умолчанию не создает обратную зону.

Настройка сервера

Установить пакет: # 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

Установить на введенном в домен сервере сервис nfs: # apt-get install nfs-server Включить SECURE_NFS: {{{1}}} Включить автозапуск сервиса: # systemctl enable --now nfs-server

На 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

Сгенерировать таблицу ключей службы и сохранить в 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 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

Зайти доменным пользователем в систему и проверить возможность чтения/записи в каталог testdir.