Kinit с systemd в пользовательском режиме

я создал keytab файл в домашнем каталоге пользователя $HOME/client.keytab. Файл кэша проверки подлинности находится в папке по умолчанию /tmp/krb5cc_%U (где %U-UID). Теперь у меня есть этот простой systemd unit файл для запуска сервиса и получения ключей аутентификации:

[Unit]
Description=Initializes, caches and renews Kerberos tickets for user
After=default.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/usr/bin/kdestroy -q -c /tmp/krb5cc_%U
ExecStart=/usr/bin/kinit -V -l 30d -r 365d -k -t %h/client.keytab -c /tmp/krb5cc_%U %i@EXAMPLE.COM
ExecStartPost=/usr/bin/krenew -b -K 60 -k /tmp/krb5cc_%U
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=KerberosTicketing

[Install]
WantedBy=default.target

это работает отлично, и создает и хранит билеты проверки подлинности Kerberos, если After указывает на default.target. Впрочем, почему default.target? Это довольно поздно в процессе загрузки. Я бы предпочел она работала в multi-user.target, так что я могу использовать сгенерированные билеты для монтирования удаленных файловых систем с серверов, которые не принимают публичную/частную аутентификацию.

EDIT: если After ничего, кроме default.target или позже, kinit выдает ошибку kinit: Cannot find KDC for realm "EXAMPLE.COM" while getting initial credentials.

я в основном пытаюсь сделать это:sshfs автоматически монтируется через FSTAB с помощью Kerberos (GSSAPI).

20
задан Kartik
05.12.2022 19:33 Количество просмотров материала 2753
Распечатать страницу

1 ответ

на systemd --user единицы, здесь начинается время. весь -- user manager начинается поздно в процессе загрузки-это системная служба (user@.сервис), который запускается systemd-logind, который сам всегда запускается во время поздней загрузки.

приказать обслуживание против более предыдущих блоков (как remote-fs.target), вам нужно преобразовать это в system сервис. Затем ваш .единицы монтирования (или ваши записи fstab) смогут указать зависимости от вашего сервиса, а также.


обратите внимание, что WantedBy= не определите, когда ваша единица будет поставлена в очередь (в обратном порядке). Вместо этого это определяется параметрами (implicit и explicit) Before=/After=. Вполне возможно и общее иметь блок с " WantedBy=multi-user.цель", но и "DefaultDependencies=нет" и "до=удаленную ФС.цель."


в качестве примечания,не выполнить демоны такие как krenew -K via ExecStartPost=. Единственное место, которое "официально" позволяет длительные процессы (и предоставляет такие функции, как перезапуск=) является основным ExecStart=, так что если вы хотите периодическое обновление, положить krenew -K там.

вы можете запустить kinit как второй ExecStartPre=, или использовать k5start -K что позволит избежать необходимости вручную kinit.

ExecStart=/usr/bin/k5start -L -b -K 30 -f %h/client.keytab -k /tmp/krb5cc_%U -u %i@EXAMPLE.COM
1
отвечен grawity 2022-12-07 03:21

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх