Вопрос или проблема
Я хочу поделиться папкой через свою домашнюю сеть; мне не нужны никакие имена пользователей и пароли.
Я настроил общий доступ в 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
, вам необходимо выполнить несколько простых шагов.
-
Удаление
samba-ad-dc
: Для начала нужного полностью удалить из системы пакеты, связанные сsamba-ad-dc
, чтобы они не мешали работе вашего основного сервера.sudo apt purge samba-ad-dc
-
Переустановка Samba: Проверка на наличие и исправную установку стандартного пакета Samba.
sudo apt install --reinstall samba
-
Перезапуск и проверка служб: Убедитесь, что после вышеперечисленных действий служба работает корректно.
sudo systemctl restart smbd sudo systemctl status smbd
-
Проверка конфигурации: Убедитесь, что в конфигурационном файле
/etc/samba/smb.conf
у вас нет настроек, относящихся к доменному контроллеру. Заново проверьте разделы [global] и [Shares], чтобы убедиться в их корректности. Если в конфигурации встретятся упоминания, например,logon script
илиadd machine script
, убедитесь, что эти параметры неактивны (закомментированы). -
Тестирование: Запустите тестовую проверку конфигурации, чтобы убедиться в отсутствии ошибок.
testparm
Это выполнит проверку на синтаксические ошибки и подтвердит корректность настроек.
-
Настройка сетевого доступа: Убедитесь, что ваш роутер и сетевые настройки не блокируют доступ к Samba-серверу и что указаны правильные IP или интерфейсы (при необходимости).
Эти шаги позволят вам устранить ненужные проблемы с настройкой доменного контроллера и создать стабильную, безопасную и удобную в использовании файловую среду в рамках домашней сети. Таким образом, вы сможете насладиться безпроблемным шэрингом без логинов и паролей для всех ваших устройств.