Я потратил некоторое время на настройку аутентификации на основе LDAP в моей сети MacOS, iOS и Linux, принимая во внимание особые особенности MacOS и Synology (мой NAS) . SSH-вход (SSH-ключи и т. Д.) Работает, а общие ресурсы Samba работают. Все это было довольно неудобно, и теперь я знаю о LDAP больше, чем я ожидал.
Однако ...
Достигнув точки, когда я могу (по крайней мере теоретически) войти в систему на любой машине в моей сети, я подумал, что было бы неплохо, если бы пользователи также имели доступ к одному и тому же домашнему каталогу везде. Нет проблем: autofs
, которым также можно управлять из LDAP! Или я так подумал ...
Я пытаюсь настроить домашние каталоги Samba для autofs
, примерно так:
cn=*,ou=auto.home,cn=automount,cn=etc,dc=home,dc=arpa
cn: *
objectClass: automount
objectClass: top
automountInformation: -fstype=cifs,vers=3.0,domain=HOME,rw,username=&,uid=&,gid=& ://s-sy-00.local/home
Немного предыстории:
s-sy-00.local
- это мой Synology NAS, в котором будут размещаться домашние каталоги. / home
- это UNC общего домашнего каталога, который Synology обслуживает для пользователя, указанного в username =
. Проблемы начинаются, когда я вхожу на удаленную машину с помощью SSH. autofs
пытается смонтировать домашний каталог пользователя, но ему нужен пароль пользователя.Я могу поместить пароль в параметр password =
в строке automountInformation
, или я могу поместить имя пользователя и пароль в файл учетных данных, который я передаю с помощью credentials =
параметр. Оба подхода приводят к дополнительной сложности (запись automount
для каждого пользователя) и дублированию (одно и то же имя пользователя и пароль в двух разных местах: LDAP и файл учетных данных или automount
и ] posixUser
в LDAP).
Есть ли стандартный способ решения этой проблемы? Мои навыки поисковой машины еще ничего не нашли.
Мне кажется, что есть три возможных решения:
Я бы предпочел номер 1 :-) Я испытываю отвращение к Kerberos: он кажется излишним и, безусловно, относительно сложным.
Может ли кто-нибудь предложить несколько мудрых слов, которые помогут мне быстро начать новый год?
Что ж, если вы работаете в Linux и используете аутентификацию с паролем для первоначального входа в систему, тогда у вас может быть модуль PAM, который хранит пароль в связке ключей ядра, откуда mount.cifs может его забрать. Я не уверен на 100%, поставляется ли cifs-utils с ним в настоящее время, но у него есть инструмент CLI cifscreds
, который делает то же самое.
Тем не менее, лично я бы просто установил аутентификацию Kerberos вместо LDAP. (То есть, оставляя LDAP выполнять только работу службы каталогов.) В целом Kerberos похож на LDAP: выглядит сложным снаружи, оказывается очень простым, если присмотреться, за исключением миллиона причуд, крайних случаев и странные решения 1980-х годов, которые снова усложняют ситуацию.
Он будет немного более универсальным, чем хаки PAM для SMB - те же билеты можно использовать для доступа к SMB, NFS, LDAP, HTTP, SSH ... Вы даже можете повторно использовать существующий сервер LDAP в качестве базы данных KDC. backend, получая репликацию бесплатно без необходимости иметь дело с kprop.
Обратите внимание, что с mount.cifs, и Kerberos, и cifscreds предназначены для использования при монтировании общего ресурса с опцией multiuser
, которая дает вам поведение, подобное NFS - то же самое К монтированию SMB могут получить доступ несколько пользователей, и ядро автоматически будет использовать правильные учетные данные SMB для каждого uid.
А что касается аутентификации с открытым ключом SSH, вы мало что можете сделать автоматически - либо вы получаете файл учетных данных и используете его с cifscreds
, либо вы получаете файл учетных данных и используете его с ] kinit
... Опять же, последнее более универсально.
Хотя я считаю, что ответ @ user1686 является правильным, я все же хотел бы поделиться с вами обходным решением, которое я нашел и буду использовать, пока не найду время для перехода на решение Kerberos.
Я создал пользователя на NAS, которого назвал smbowner
, и назначил ему пароль. Я дал smbowner
права администратора на NAS, что означает, что он может монтировать общий ресурс SMB.
Я создал файл учетных данных Samba на машине, которая требовалась для монтирования общего ресурса SMB. Я помещаю его в / etc / samba / credentials / s-sy-00
, и он выглядит так:
username=smbowner
password=whatever
Обратите внимание, что файл учетных данных не содержит определения домена.
cn=*,ou=auto.home,cn=automount,cn=etc,dc=home,dc=arpa
cn: *
objectClass: automount
objectClass: top
automountInformation: -fstype=cifs,vers=3.0,domain=HOME,rw,credentials=/etc/samba/credentials/s-sy-00,uid=&,gid=& ://s-sy-00.local/&
В свою защиту можно сказать, что это решение работает, хотя я не уверен, насколько оно безопасно в более агрессивной среде, чем моя.
Как это работает? smbowner
имеет достаточные разрешения для монтирования любого общего ресурса на NAS. Параметры uid = &
и gid = &
гарантируют, что общий ресурс доступен для локального пользователя. Позже я поэкспериментирую с настройками разрешений для общего ресурса на NAS.
Возможно, это поможет кому-то другому.
Стив