Как запустить контейнеры Docker от имени пользователя домена Active Directory (SSSD)? («невозможно найти пользователя»)

Я запускаю несколько общих ресурсов Samba на выделенной машине Debian 9.6, присоединенной к домену AD (Zentyal с SMB 4).

Я использую довольно простую установку SSSD, которая пока идеально подходит для наших нужд.

Я хочу настроить Ambar , чтобы пользователи различных доменов могли искать документы на вышеупомянутых общих ресурсах Samba. Однако я хочу, чтобы Ambar сканировал только «общедоступные» документы и ничего из частных / «управляющих» папок.

Я изменил docker-compose.yml, чтобы Docker создавал нужные ему контейнеры как пользовательский искатель , но когда я запускаю docker-compose up -d , я получаю следующую ошибку:

ОШИБКА: для Общая папка Невозможно запустить службу Общая папка: пользователь спецификаций linux: не удалось найти искатель пользователя: нет соответствующих записей в файле passwd

Ручное редактирование файла / 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?

1
задан 1 April 2019 в 18:42
1 ответ

Конфигурация домена в 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, а не с конфигурацией докера.

0
ответ дан 7 April 2020 в 22:14

Теги

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