Назад | Перейти на главную страницу

сервис на nfs с sec = krb5i

Я пытаюсь установить nextcloud на ящик ArchLinuxARM и хочу хранить загруженные данные на сервере NFS (тестирование debian). Сервер NFS использует sec=krb5i экспортировать акции.

У меня работает SSSD, а NFS работает нормально для обычных пользователей.

Однако мне не удается заставить это работать для пользователя http.

Я тестирую с

sudo -u http ls /mount/http-folder

Затем я попытался экспортировать ключи http в keytab, но sudo -u http KRB5_CLIENT_KTNAME=/etc/httpd/conf/krb5.keytab ls /mount/http-folder такая же проблема.

Обновление (2 - решено!):

Приложение должно знать керберос и честь KRB5_CLIENT_KTNAME.

Или лучше, когда клиентский keytab находится в месте по умолчанию (как указал Петр П. Карваш, это можно идентифицировать с помощью krb5-config --defcktname) его заберет rpc.gssd автоматически.

[root]> su -l http -s /usr/sbin/bash
[http]> ls /mount/http-folder
ls: cannot open directory '/mount/http-folder': Stale file handle
[http]> krb5-config --defcktname
FILE:/var/lib/krb5/user/%{euid}/client.keytab
[http]> export KRB5_CLIENT_KTNAME=/var/lib/krb5/user/http/client.keytab 
[http]> ls /mount/http-folder
ls: cannot access '/mount/http-folder': Permission denied

# note the difference (1)

[http]> $ kinit -t $KRB5_CLIENT_KTNAME http
keytab specified, forcing -k
[http]> ls /mount/http-folder
this_is_www-data
[http]> exit

# solution:

[root]> mv /var/lib/krb5/user/http /var/lib/krb5/user/`id -u http`
[root]> su -l http -s /usr/sbin/bash
[http]> kdestroy  # (2)
[http]> ls /mount/http-folder
this_is_www-data

(1) не уверен, что вызывает это - согласно документации kerberos он должен использовать первый принципал, найденный в файле client keytab - client keytab содержит только желаемый принциал, так что ...? Как правильно указывает Петр П. Карваш,% {euid] - это числовой id, а не имя пользователя (облом!), поэтому клиентский keytab не в местоположении по умолчанию!

(2) убедитесь, что кеш билетов пуст

Итак, проблема решена. Спасибо, Петр!

Когда процесс обращается к вам при монтировании NFS, ядро ​​выполняет обратный вызов rpc.gssd для установления полномочий. Я не изучал механизм обратного вызова, но считаю, что rpc.gssd не имеет доступа к KRB5_CLIENT_KTNAME переменная или просто игнорирует ее и использует местоположение по умолчанию.

Файл /var/lib/krb5/user/http/client.keytab не является местоположением по умолчанию в вашей системе. Попробуйте заменить http с числовым uid пользователя http:

getent passwd http | cut -d : -f 3