Почему Samba не добавляет нового пользователя с помощью «samba-tool»?


8

Я пытаюсь настроить общий ресурс Samba на моем работающем сервере Dell Poweredge 860 14.04 LTS. Samba была удалена (когда я ее выбрал), поэтому мне просто нужно ее настроить. Я пытаюсь подключить его к моей машине с Windows.

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

[global]
        workgroup = HOME
        server string = Samba Ubuntu Server
        map to guest = Bad User
        log file = /var/log/samba/log.%m
        max log size = 50
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        local master = No
        dns proxy = No
        idmap config * : backend = tdb

[Queue]
        comment = "A small folder to move files from/to the server. For use by server admin."
        path = /serv/samba/queue
        valid users = penguin
        read only = No
        create mask = 0777
        directory mask = 0777

Там все хорошо. (Я должен отметить, что у меня тоже есть учетная запись penguin, но я хочу, чтобы все пользователи были настроены с использованием, samba-toolпотому что penguinэто единственная учетная запись пользователя, которая будет на ней, и будет больше пользователей, чем сейчас).

penguin@Ubuntu-Server-1:~/serv/samba$ sudo samba-tool user add penguin
New Password:
Retype Password:
ERROR(<type 'exceptions.ValueError'>): Failed to add user 'penguin':  - unable to parse dn string
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 176, in run
    uid=uid, uidnumber=uid_number, gidnumber=gid_number, gecos=gecos, loginshell=login_shell)
  File "/usr/lib/python2.7/dist-packages/samba/samdb.py", line 343, in newuser
    dnsdomain = ldb.Dn(self, self.domain_dn()).canonical_str().replace("/", "")

Я пробовал также с другим именем пользователя, которого нет в системе. Не работает

Я не могу даже выполнить простое sudo samba-tool user listбез ошибок!

ERROR(ldb): uncaught exception - ldb_search: invalid basedn '(null)'
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/__init__.py", line 175, in _run
    return self.run(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/samba/netcmd/user.py", line 271, in run
    attrs=["samaccountname"])

Что я делаю неправильно?

Ответы:


7

Насколько я знаю, samba-toolэто только для обеспечения Active Directory (AC). Так что, если вы не настроили свой Samba в качестве сервера переменного тока, samba-tool user addон не будет работать.

Вы должны спросить себя, нужен ли вам сервер Active Directory в вашей сети или вам нужен только простой Samba-сервер только с его собственными пользователями.

В случае, если вам нужен AC-сервер, вы должны следовать руководству, предоставленному самим проектом samba ( https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO ). Но будьте осторожны, эта документация не подходит для Ubuntu напрямую, и вам нужно понять, что зависит от нее (а именно DNS, Kerberos, LDAP).

Если вам нужен только простой сервер, имеющий несколько учетных записей для собственных целей и обеспечивающий доступ к некоторым общим папкам, вам следует следовать инструкциям для samba3. Samba4 совместим с этими настройками для samba3, и хотя вам необходимо smbpasswdсоздать пользователя в samba. «Общие руководства по Samba» в документации по Ubuntu Server должны предоставить вам всю необходимую информацию.


7

Просто напишите это вместо этого в терминале:

smbpasswd -a penguin

И добавляемого вами пользователя нужно добавить в систему Ubuntu, как нового пользователя.

Это можно сделать с помощью

sudo useradd penguin

или

sudo adduser penguin

1

Я обеспокоен тем, что эта «ошибка» может быть ошибочно классифицирована, потому что она проявляется в самых разных формах. Я только что нашел сообщение об ошибке, начиная с 2014 года и сообщающее о том же, что и я:

Список пользователей samba-tool ... несколько раз терпит неудачу. Но тогда, то же самое делают все остальные команды, включающие samba-tool, кроме: samba-tool -V (который правильно сообщает номер версии)

Вот подсказка (или я бы сказал «подсказка») айсберга:

acel: / mnt / nsd # список пользователей samba-tool Обнаружен неизвестный параметр: «acl xattr update mtime» Игнорирование неизвестного параметра «acl xattr update mtime» ОШИБКА (ldb): необработанное исключение - ldb_search: неверный basedn '(null)' File ' /usr/lib/python2.7/dist-packages/samba/netcmd/ init .py ", строка 175, в _run вернуть файл self.run (* args, ** kwargs)" /usr/lib/python2.7/ dist-packages / samba / netcmd / user.py ", строка 292, в run attrs = [" samaccountname "]) acel: / mnt / nsd # список пользователей samba-tool ОШИБКА (ldb): необработанное исключение - ldb_search: недействительно basedn '(null)'
Файл "/usr/lib/python2.7/dist-packages/samba/netcmd/ init.py ", строка 175, в _run возвращает файл self.run (* args, ** kwargs) Файл" /usr/lib/python2.7/dist-packages/samba/netcmd/user.py ", строка 292, в запуске attrs = ["samaccountname"]) acel: / mnt / nsd # which ldb ldb: Команда не найдена.

Проблема? После того, как я столкнулся с этим на одной системе, я проверил samba-tool на трех других независимых системах (все Ubuntu), и на них также был сломан samba-tool. Я нашел несколько отдельных ссылок на подобные проявления в сообщениях об ошибках, некоторые из которых уходят в прошлое на 4-6 лет. Я также нашел несколько сообщений о том, что ошибка была «исправлена» ... (этот вариант не исправлен).

Все, что я хотел сделать, это убедиться, что база данных пользователей и паролей samba была чистой, удалив сироту, а я не смог. Ясно, что если samba-tool не работает (и в моем случае у меня есть 4 сервера, на которых работает Samba, и он не работает ни на одном из них), его необходимо исправить.

Единственная подсказка, которую я могу предложить: одна ссылка, которую я прочитал, упоминала функцию синхронизации паролей в Samba как возможную причину. Я столкнулся с этим, когда samba обнаружил бесхозный идентификатор пользователя samba, который я создал, переименовав его оригинального близнеца в файл / etc / passwd. Я просто пытался использовать инструмент самбы, чтобы удалить сироту. Но я предполагаю, что возможно, что когда samba попытался синхронизировать свою пользовательскую базу данных с системой и обнаружил, что первоначальный пользователь отсутствует, некоторый ущерб был нанесен. (?)

Это не ответ. Это всего лишь предположение, что ошибка, вероятно, все еще существует, и лучшее место, чтобы начать проверку, чтобы убедиться, что вы затронуты, это запустить простые функции samba-tool, чтобы проверить, работает ли она правильно:

'samba-tool user list' или 'samba-tool dbcheck', например.

Все мои (1 V4.7 и 3 V4.3) сломаны. (Надеюсь это поможет.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.