Удаление samba-ad-dc на Debian

Вопрос или проблема

Я хочу поделиться папкой через свою домашнюю сеть; мне не нужны никакие имена пользователей и пароли.

Я настроил общий доступ в smb.conf, но служба samba не запускается из-за какой-то ерунды с другой службой под названием samba-ad-dc.

# systemctl status samba
○ samba-ad-dc.service - Samba AD Daemon
     Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; preset: enabled)
     Active: inactive (dead) (Result: exec-condition) since Fri 2025-01-17 16:30:20 GMT; 7min ago
  Condition: start condition failed at Fri 2025-01-17 16:30:20 GMT; 7min ago
       Docs: man:samba(8)
             man:samba(7)
             man:smb.conf(5)
    Process: 911095 ExecCondition=/usr/share/samba/is-configured samba (code=exited, status=1/FAILURE)
        CPU: 34ms

Jan 17 16:30:20 calleva systemd[1]: Starting samba-ad-dc.service - Samba AD Daemon...
Jan 17 16:30:20 calleva systemd[1]: samba-ad-dc.service: Skipped due to 'exec-condition'.
Jan 17 16:30:20 calleva systemd[1]: Condition check resulted in samba-ad-dc.service - Samba AD Daemon being skipped.

# systemctl status samba-ad-dc.service
○ samba-ad-dc.service - Samba AD Daemon
     Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; preset: enabled)
     Active: inactive (dead) (Result: exec-condition) since Fri 2025-01-17 16:30:20 GMT; 2s ago
  Condition: start condition failed at Fri 2025-01-17 16:30:20 GMT; 2s ago
       Docs: man:samba(8)
             man:samba(7)
             man:smb.conf(5)
    Process: 911095 ExecCondition=/usr/share/samba/is-configured samba (code=exited, status=1/FAILURE)
        CPU: 34ms

Jan 17 16:30:20 calleva systemd[1]: Starting samba-ad-dc.service - Samba AD Daemon...
Jan 17 16:30:20 calleva systemd[1]: samba-ad-dc.service: Skipped due to 'exec-condition'.
Jan 17 16:30:20 calleva systemd[1]: Condition check resulted in samba-ad-dc.service - Samba AD Daemon being skipped.

Похоже, что systemctl enable samba на самом деле активировал samba-ad-dc. Есть пакет apt с таким названием, но он не установлен. Попробовал apt reinstall samba, но всё ещё в беспорядке.

Как получить обычный samba без этой фигни с доменным контроллером?

Правка: добавление smb.conf

$ cat /etc/samba/smb.conf
#
# Пример файла конфигурации для комплекта Samba для Debian GNU/Linux.
#
#
# Это основной файл конфигурации Samba. Вам следует прочитать
# руководство smb.conf(5), чтобы понять, какие опции тут указаны.
# У Samba огромное количество настраиваемых опций, большинство из которых
# не показаны в этом примере.
#
# Некоторые опции, которые часто стоит настроить, включены в виде
# прокомментированных примеров в этом файле.
#  - Когда такие опции прокомментированы с ";", предлагаемая настройка
#    отличается от стандартного поведения Samba.
#  - Когда прокомментированы с "#", предлагаемая настройка является
#    стандартным поведением Samba, но опция достаточно важна,
#    чтобы её упомянуть здесь.
#
# ПРИМЕЧАНИЕ: Каждый раз, когда вы изменяете этот файл, вам следует
# выполнить команду "testparm", чтобы убедиться, что вы не допустили
# базовых синтаксических ошибок.

#======================= Глобальные настройки =======================

[global]

## Просмотр/Идентификация ###

# Измените это на имя рабочей группы/домен NT, частью которой будет ваш сервер Samba
   workgroup = WORKGROUP

#### Сетевые настройки ####

# Указать, к каким интерфейсам/сетям привязываться
# Это может быть либо имя интерфейса, либо IP-адрес/маска сети;
# предпочтительно использовать имена интерфейсов
;   interfaces = 127.0.0.0/8 eth0

# Привязываться только к указанным интерфейсам и/или сетям; вы должны использовать
# опцию 'interfaces' выше, чтобы использовать это.
# Рекомендуется включить эту функцию, если ваш сервер Samba
# не защищен межсетевым экраном или является межсетевым экраном сам по себе.
# Однако эта опция не может корректно обрабатывать динамические или нерассылкаемые интерфейсы.
;   bind interfaces only = yes

#### Отладка/учет ####

# Это указывает Samba использовать отдельный лог-файл для каждой машины,
# которая подключается
   log file = /var/log/samba/log.%m

# Ограничить размер индивидуальных журналов файлами (в Кибибайтах).
   max log size = 1000

# Мы хотим, чтобы Samba логировал только в /var/log/samba/log.{smbd,nmbd}.
# Добавьте syslog@1, если вы хотите, чтобы важные сообщения
# также отправлялись в syslog.
   logging = file

# Делать что-то разумное, если Samba сломается: отправьте администратору трассировку
   panic action = /usr/share/samba/panic-action %d

####### Аутентификация #######

# Роль сервера. Определяет, в каком режиме будет работать Samba.
# Возможные значения: "автономный сервер", "член сервера", "классический основной
# контроллер домена", "классический вспомогательный контроллер домена", "контроллер домена Active Directory".
#
# Большинство пользователей выбирают "автономный сервер" или "член сервера".
# Работать как "контроллер домена Active Directory" требует сначала выполнить
# "samba-tool domain provision", чтобы стереть базы данных и создать новый домен.
   server role = standalone server

   obey pam restrictions = yes

# Этот булев параметр управляет тем, пытается ли Samba синхронизировать
# пароль Unix с паролем SMB, когда зашифрованный пароль SMB
# в passdb изменяется.
   unix password sync = yes

# Для работы синхронизации паролей Unix в Debian GNU/Linux, должны быть установлены
# следующие параметры (спасибо Яну Кахану <<[email protected]>
# за отправку правильного чата-скрипта для программы passwd в Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# Этот булев параметр управляет тем, будет ли PAM использоваться для изменений пароля
# по запросу клиента SMB вместо программы, перечисленной в
# 'passwd program'. По умолчанию 'нет'.
   pam password change = yes

# Этот параметр управляет тем, как неудачные попытки аутентификации маппируются
# на анонимные подключения
   map to guest = bad user

########## Домены ###########

#
# Следующие настройки применяются, только если
# 'server role = classic primary domain controller',
# 'server role = classic backup domain controller' или 'domain logons' установлены
#

# Указывает местоположение
# пользовательского профиля (с точки зрения клиента) Требуется
# [profiles] размеченный совместно сервером samba (смотрите ниже)
;   logon path = \\%N\profiles\%U
# Другой частый выбор - хранение профиля в домашнем каталоге пользователя
# (это настройка по умолчанию Samba)
#   logon path = \\%N\%U\profile

# Следующая настройка применяется, только если 'domain logons' установлено
# Указывает расположение домашнего каталога пользователя (с точки зрения клиента)
;   logon drive = H:
#   logon home = \\%N\%U

# Следующая настройка применяется, если 'domain logons' установлено
# Указывает скрипт для выполнения во время входа.
# Скрипт должен быть помещен в раздел [netlogon].
# ПРИМЕЧАНИЕ: Должен быть сохранен в формате файлов 'DOS'
;   logon script = logon.cmd

# Это позволяет создавать учетные записи Unix на контроллере домена через SAMR RPC pipe.
# Пример команды создает учетную запись пользователя с отключенным паролем Unix;
# пожалуйста, адаптируйте к своим нуждам
; add user script = /usr/sbin/useradd --create-home %u

# Это позволяет создавать учетные записи машин на контроллере домена через SAMR RPC pipe.
# Предполагается, что группа "machines" существует в системе
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u

# Это позволяет создавать группы Unix на контроллере домена через SAMR RPC pipe.
; add group script = /usr/sbin/addgroup --force-badname %g

############ Разное ############

# Использование следующей строки позволяет настраивать вашу конфигурацию
# для каждой машины индивидуально. %м заменяется на netbios имя
# машины, которая подключается
;   include = /home/samba/etc/smb.conf.%m

# Некоторые настройки по умолчанию для winbind (убедитесь, что не используете диапазоны
# для чего-то другого.)
;   idmap config * : backend = tdb
;   idmap config * : range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash

# Настройка параметров usershare для разрешения пользователям без root-прав
# делиться папками с помощью команды net usershare.

# Максимальное количество usershare. 0 означает, что usershare отключено.
#   usershare max shares = 100

# Разрешить пользователям, которым предоставлены права на usershare,
# создавать общедоступные ресурсы, а не только аутентификационные.
   usershare allow guests = yes

#======================= Определения общих ресурсов =======================

[homes]
   comment = Домашние каталоги
   browseable = no

# По умолчанию домашние каталоги экспортируются в режиме чтения.
# Измените следующий параметр на 'no', если хотите иметь возможность записывать в них.
   read only = yes

# Маска создания файла установлена на 0700 по причинам безопасности.
# Если хотите создавать файлы с правами группы=rw,
# установите следующий параметр на 0775.
   create mask = 0700

# Маска создания каталога установлена на 0700 по причинам безопасности.
# Если хотите создавать каталоги с правами группы=rw,
# установите следующий параметр на 0775.
   directory mask = 0700

# По умолчанию, \\server\username можно подключиться кому угодно
# с доступом к серверу samba.
# Следующий параметр гарантирует, что только "username" может подключиться
# к \\server\username
# Это может потребовать настроек при использовании внешних схем аутентификации
   valid users = %S

# Раскомментируйте следующее и создайте каталог netlogon для Входа в Домены
# (необходимо настроить использование Samba для работы в качестве контроллера домена.)
;[netlogon]
;   comment = Служба входа в сеть
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

# Раскомментируйте следующее и создайте каталог profiles для хранения
# пользовательских профилей (см. опцию "logon path" выше)
# (необходимо настроить использование Samba для работы в качестве контроллера домена.)
# Путь ниже должен быть доступен для записи всеми пользователями, чтобы
# их профильный каталог мог быть создан при первом входе в систему
;[profiles]
;   comment = Пользовательские профили
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
   comment = Все принтеры
   browseable = no
   path = /var/tmp
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

# Клиенты Windows ищут это имя общего ресурса как источник
# скачиваемых драйверов принтера.
[print$]
   comment = Драйверы принтера
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
# Раскомментируйте для разрешения удаленного администрирования драйверов Windows принтера.
# Возможно, вам потребуется заменить 'lpadmin' на имя группы, в которой
# членами администраторы ваших пользователей.
# Обратите внимание, что вам также нужно установить соответствующие права Unix
# на каталог драйверов, чтобы эти пользователи имели права на запись в него
;   write list = root, @lpadmin

[Files]
        comment = Общие файлы (SMB, netatalk, DNLA,...)
        read only = no
        path = /srv/shared
        guest ok = yes
        browseable = yes
        writable = yes
        create mask = 0666
        directory mask = 0777
        force user = rwb
        public = yes

[GoogleDrive]
        comment = Google Drive
        read only = no
        path = /srv/GoogleDrive
        guest ok = yes
        browseable = yes
        writable = yes
        create mask = 0666
        directory mask = 0777
        force user = rwb

Вам нужен samba и его зависимости. Вам не нужен samba-ad-dc

apt install samba
apt purge samba-ad-dc

Затем вы можете отредактировать /etc/samba/smb.conf по мере необходимости

Ответ или решение

Удаление службы Samba AD DC на Debian для оптимизации локальной сети без контроллера домена

Теория:

В вашей ситуации первоочередной задачей является настройка стабильного и простого файлового сервера для домашней сети, который не требует ввода пользователями логин-пароля для доступа. Это достигается через использование Samba — программного обеспечения с открытым исходным кодом, которое позволяет обмениваться файлами и ресурсами в сети. В то время как Samba может функционировать как Active Directory (AD) контроллер домена, в простых домашних сетях это избыточно и создаёт сложности при настройке и эксплуатации.

Проблема, с которой вы столкнулись, заключается в том, что служба samba-ad-dc, которая отвечает за исполнение функций контроллера домена, была случайно включена и мешает запуску простого режима Samba.

Пример:

Рассмотрим ваш текущий файл конфигурации smb.conf. В его строках видно, что настройка вашего Samba сервера уже предполагает работу в режиме отдельного сервера (standalone server), что подтверждается строкой:

server role = standalone server

Также ваш конфигурационный файл содержит разделы шаринга, которые настроены на использование гостевого доступа, например:

[Files]
        comment = Shared files (SMB, netatalk, DNLA,...)
        read only = no
        path = /srv/shared
        guest ok = yes
        browseable = yes
        writable = yes
        create mask = 0666
        directory mask = 0777
        force user = rwb
        public = yes

Это указывает на то, что в теории ваша конфигурация придерживается правильного пути к простой и функциональной сетевой шэры.

Применение:

Для дальнейшей оптимизации и устранения проблемы с samba-ad-dc, вам необходимо выполнить несколько простых шагов.

  1. Удаление samba-ad-dc: Для начала нужного полностью удалить из системы пакеты, связанные с samba-ad-dc, чтобы они не мешали работе вашего основного сервера.

    sudo apt purge samba-ad-dc
  2. Переустановка Samba: Проверка на наличие и исправную установку стандартного пакета Samba.

    sudo apt install --reinstall samba
  3. Перезапуск и проверка служб: Убедитесь, что после вышеперечисленных действий служба работает корректно.

    sudo systemctl restart smbd
    sudo systemctl status smbd
  4. Проверка конфигурации: Убедитесь, что в конфигурационном файле /etc/samba/smb.conf у вас нет настроек, относящихся к доменному контроллеру. Заново проверьте разделы [global] и [Shares], чтобы убедиться в их корректности. Если в конфигурации встретятся упоминания, например, logon script или add machine script, убедитесь, что эти параметры неактивны (закомментированы).

  5. Тестирование: Запустите тестовую проверку конфигурации, чтобы убедиться в отсутствии ошибок.

    testparm

    Это выполнит проверку на синтаксические ошибки и подтвердит корректность настроек.

  6. Настройка сетевого доступа: Убедитесь, что ваш роутер и сетевые настройки не блокируют доступ к Samba-серверу и что указаны правильные IP или интерфейсы (при необходимости).

Эти шаги позволят вам устранить ненужные проблемы с настройкой доменного контроллера и создать стабильную, безопасную и удобную в использовании файловую среду в рамках домашней сети. Таким образом, вы сможете насладиться безпроблемным шэрингом без логинов и паролей для всех ваших устройств.

Оцените материал
Добавить комментарий

Капча загружается...