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

Как Cron взаимодействует с Kerberos для аутентификации?

У меня есть машина CentOS 6.4, на которой установлены pam_ldap и pam_krb5. Он настроен на использование наших серверов Active Directory для аутентификации. Я могу подключиться к машине по SSH, используя учетные записи AD.

Я не создавал никаких файлов ключей.

Я установил crontab для пользователя AD на машине CentOS, который каждую минуту записывает некоторые данные в файл. Папка, в которую выполняется запись, находится в общей папке NFS, и папка заблокирована, так что доступ к ней могут получить только члены определенной группы AD. Данный пользователь AD является членом группы и не имеет локальной учетной записи на машине CentOS.

Как cron продолжает иметь доступ для запуска задания от имени пользователя AD, когда пользователь AD не вошел в систему?

Если вы используете NFSv4 с поддержкой Kerberos (и я был бы очень удивлен, если вы это сделаете), вам нужно создать какую-то пользовательскую keytab и использовать что-то вроде kstart в начале задания cron, чтобы получить kerberos tgt. В противном случае вам не потребуются учетные данные Kerberos для доступа к файловой системе NFS.

Эта проблема существует всегда в среде AFS и имеет несколько стандартных решений. Как правило, вы создаете альтернативного участника, чтобы вставить его в keytab и сопоставлять обоих участников с одним и тем же uid unix. (т.е. я создаю keytab в системе cron для fred/cron@MAGIC.WONDER.DOG) и использую соответствующий инструмент для сопоставления принципала kerberos с тем же uid unix по адресу fred@MAGIC.WONDER.DOG.

Папка, в которую выполняется запись, находится в общей папке NFS.

NFSv3? Нет авторизации. NFSv3 принимает слово клиента о том, что пользователь является тем, кем он себя называет. Это также совершенно небезопасно - если у меня есть root-доступ к ящику, я могу использовать su и получить доступ к файлам пользователя в общей папке NFS, даже если это общий ресурс root_squash.

Cron на самом деле не выполняет задание как DOMAIN \ user, он запускает его как UID #, что и является всем, что заботит NFSv3.

Теперь, если вы монтировали общий ресурс CIFS / NFSv4, он должен выйти из строя.