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

Автоматически подключенные домашние каталоги AFP принадлежат пользователю root (клиент OS X Yosemite, серверы Linux)

Что я пытаюсь сделать, но не могу приступить к работе

Я пытаюсь настроить пользователей сети в клиентах Yosemite с их домашними каталогами на керберизованном AFP. Я использую automountd для монтирования домашних каталогов в / home / username, как только к ним обращаются (то есть, как только кто-то входит в систему). По большей части это работает: я могу войти в систему как сетевой пользователь, я получаю билет Kerberos, и этот билет используется для монтирования домашнего каталога. Монтаж работает нормально. Однако домашний каталог будет принадлежать пользователю root (группа: wheel), что означает, что пользователь не может получить к нему доступ. OS X затем запросит у пользователя пароль администратора для «восстановления библиотеки пользователя».

Обратите внимание, что мы не запускаем OS X Server, потому что сеть предназначена не только для Mac. Скорее, мы используем OpenLDAP и MIT Kerberos на машинах Linux. Также обратите внимание, что я в основном администрирую серверы Linux и клиенты Windows, и я изо всех сил пытаюсь сделать все правильно, как Mac.

Что я могу сделать, чтобы обойти проблему (но наши пользователи не могут)

Когда я сначала вхожу в систему как локальный администратор, а затем делаю (на терминале) "su someNetworkUser", он работает отлично: домашний каталог монтируется с билетом Kerberos и принадлежит someNetworkUser. Я могу даже сделать это, а затем вернуться в окно входа в систему (не выходя из системы локального администратора, поэтому домашний каталог не получает unmounted), а затем войдите в систему как someNetworkUser: это будет работать отлично, потому что домашний каталог уже смонтирован с правильными учетными данными и принадлежит someNetworkUser. OS X не будет жаловаться на сломанную библиотеку.

Что я думаю происходит

Итак, по-видимому, первый процесс для доступа к / home / someNetworkUser во время входа в систему через окно входа принадлежит пользователю root. automountd заметит и смонтирует домашний каталог, и он также будет принадлежать пользователю root. Я знаю, что окно входа в систему сначала получает билет Kerberos для someNetworkUser, иначе монтирование не удастся. Видимо, при использовании su дела обстоят иначе. Первый процесс для доступа к / home / someNetworkUser при использовании su, похоже, принадлежит someNetworkUser, а не root.

Я не совсем знаю, какие процессы задействованы в процессе входа в систему и почему он отличается от окна входа в систему и su. Я уже пробовал сделать /etc/pam.d/login (который, как я понимаю, используется loginwindow) почти таким же, как /etc/pam.d/su - безрезультатно.

Я также заметил, что когда соединение с сервером AFP на мгновение теряется (что я могу сделать намеренно, перезапустив демон AFP), домашний каталог перемонтируется, когда соединение восстанавливается. Однако на этот раз владельцем каталога является правильный пользователь, а не root. Это кажется вполне логичным, потому что в то время к домашнему каталогу будут обращаться процессы пользователя, а не процессы root.

Мысли серьезно обойти проблему

Но теперь я застрял. Я не знаю, как сделать так, чтобы домашние каталоги принадлежали соответствующему пользователю. У меня есть две идеи, которыми я поделюсь, но я не доволен:

  1. Создайте сценарий входа, который размонтирует домашний реж. Сценарий должен запускаться от имени пользователя root. Тогда я надеюсь, что automountd перемонтирует каталог для пользователя. Это было бы очень взломано, и в любом случае это, вероятно, не сработает, потому что домашний каталог в это время будет занят.
  2. Создайте плагин PAM, который ничего не делает, кроме доступа к домашнему каталогу пользователя сразу после того, как pam_krb5 получит билет Kerberos. Фактически, ему придется подождать, пока pam_opendirectory не узнает, где должен находиться домашний каталог пользователя; в противном случае мне пришлось бы жестко прописать какой-нибудь путь, что было бы не круто.

У тебя есть идеи?