Можно ли настроить расположение файла keytab в OpenSSH?

Файл - это данные, записанные на диск. На эти данные ссылается его индексный дескриптор, который, помимо прочего, содержит метаданные о файле, сообщающие системе, какие блоки на диске используются этим файлом. Жесткая ссылка указывает на номер inode этого файла.

Технически, да, вы создаете новый файл, но все, что этот файл содержит, - это номер inode для файла, на который он ссылается, и его имя. Лучше думать об этом как о создании указателя на индексный дескриптор или указателя на файл.

1
21.01.2017, 18:19
2 ответа

В (портативной) кодовой базе OpenSSH отсутствует ссылка на «keytab», поэтому, перейдя к конфигурации kerberos в krb5.conf, мы находим:

LIBDEFAULTS SECTION
       The following relations are defined in the [libdefaults] section:

       default_keytab_name
              This  relation  specifies  the default keytab name to be used by
              application severs such as telnetd and rlogind.  The default  is
              "/etc/krb5.keytab".  This formerly defaulted to "/etc/v5srvtab",
              but was changed to the current value.

Которое может быть или не быть слишком глобальным значением для ваших нужд, в зависимости.

1
27.01.2020, 23:34

Существует переменная среды kerberos, указывающая на расположение файла keytab kerberos, KRB5 _KTNAME. И вы, конечно, можете установить это глобально, но тогда все приложения будут смотреть на этот файл keytab.

Но я, наконец, нашел отличный способ установить его для конкретного приложения, когда конфигурация приложения явно не допускает этого. Я добавил переменную среды kerberos keytab KRB5 _KTNAME в /etc/default/ssh (, остальная часть файла ниже уже была там по умолчанию):

/etc/default/ssh
# Default settings for openssh-server. This file is sourced by /bin/sh from
# /etc/init.d/ssh.
 
# Options to pass to sshd
SSHD_OPTS=

KRB5_KTNAME=/etc/krb/host.keytab

В приведенном выше файле указан файл init.d, но многие служебные файлы systemd также ссылаются на этот файл. В моей установке Ubuntu 16.04 вот соответствующий раздел файла sshd.service по умолчанию:

/lib/systemd/system/sshd.service
[...]
[Service]
EnvironmentFile=-/etc/default/ssh
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
[...]

Конечно, если ваш служебный файл не содержит строки «EnvironmentFile», вы можете добавить ее, как указано выше, или отредактировать служебный файл, указав на любой файл с определенной переменной окружения KRB5 _KTNAME.

1
27.01.2020, 23:34

Теги

Похожие вопросы