Я использую несколько общих ресурсов Samba на выделенной машине Debian 9.6, присоединенной к домену AD (Zentyal с SMB 4).
Я использую довольно простую установку SSSD, которая пока идеально подходит для наших нужд.
Я хочу установить Амбар вверх, чтобы пользователи различных доменов могли искать документы на вышеупомянутых общих ресурсах Samba. Однако я хочу, чтобы Ambar сканировал только «общедоступные» документы и ничего из частных / «управляющих» папок.
Я изменил файл docker-compose.yml, чтобы Docker создавал нужные ему контейнеры как пользователь. гусеничный трактор, но когда я бегу docker-compose up -d
Я получаю следующую ошибку:
ERROR: for Shared-folder Cannot start service Shared-folder: linux spec user: unable to find user crawler: no matching entries in passwd file
Редактирование /etc/passwd
файл вручную здесь не помогает. Я по-прежнему получаю ту же ошибку.
Вот так выглядит соответствующая конфигурация docker-compose.yml:
Shared-folder:
depends_on:
serviceapi:
condition: service_healthy
image: ambar/ambar-local-crawler
restart: always
networks:
- internal_network
expose:
- "8082"
environment:
- name=Shared-folder
- ignoreExtensions=.{exe,dll,rar,s,so}
- apiUrl=http://serviceapi:8081
user: crawler
volumes:
- /shared/Shared-folder:/usr/data
Обратите внимание: если я удалю строку user: crawler
, все работает как положено (и root
просматривает все мои документы).
Вот мой /etc/sssd/sssd.conf
-файл:
[sssd]
services = nss, pam
config_file_version = 2
domains = MY.COMPANY.COM
[domain/MY.COMPANY.COM]
id_provider = ad
access_provider = ad
ad_gpo_map_interactive = +cron
dyndns_update_ptr=false
# Use this if users are being logged in at /.
# This example specifies /home/DOMAIN-FQDN/user as $HOME. Use with pam_mkhomedir.so
override_homedir = /home/%u
ldap_idmap_autorid_compat = True
И вот мой /etc/pam.d/common-session
:
#
# /etc/pam.d/common-session - session-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of sessions of *any* kind (both interactive and
# non-interactive).
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
session [default=1] pam_permit.so
# here's the fallback if no module succeeds
session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0066
session optional pam_winbind.so
session optional pam_sss.so
session optional pam_systemd.so
# end of pam-auth-update config
Пожалуйста, дайте мне знать, если какие-нибудь конфиги будут вам полезны! Я предполагаю, что smb.conf
не так актуально в данном случае, и что может быть какой-то способ сказать Docker, чтобы он просто доверял PAM?
Конфигурация домена в sssd.conf
не имеет use_fully_qualified_names = False
. Без этого можно ожидать, что вы будете использовать полностью определенные имена (например, crawler@MY.COMPANY.COM
). Это не обязательно для решения вашей проблемы, но я считаю полезным, если машина обращается только к одному домену. Альтернативно:
Вы можете попробовать указать полное имя пользователя в docker-compose.yaml
(т.е. user: crawler@MY.COMPANY.COM
). Я не пробовал это сделать, поэтому не могу подтвердить, что он работает должным образом.
Вы можете использовать uid пользователя вместо имени. Я использую этот метод, поэтому могу подтвердить, что он работает нормально. Вы можете получить uid, запустив id <username>
(убедитесь, что вы используете формат, соответствующий вашему use_fully_qualified_names
установка).
В любом случае, если вы не можете получить uid своего пользователя, запустив id <username>
тогда ваша проблема, скорее всего, связана с вашей конфигурацией SSSD, а не с конфигурацией докера.