Por que o Samba não está adicionando um novo usuário com o “samba-tool”?


8

Estou tentando configurar um compartilhamento Samba no meu servidor Dell Poweredge 860 em execução 14.04 LTS. O Samba veio desinstalado (quando eu o escolhi), então eu só preciso configurá-lo. Estou tentando conectá-lo à minha máquina Windows.

Meu arquivo de configuração (listado abaixo) parece ser válido. Eu não recebo nenhum erro com isso. É uma versão modificada de algo que encontrei em um tutorial online.

[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

Está tudo bem lá. (Devo observar que também tenho uma conta com nome penguin, mas quero que todos os usuários sejam configurados usando, samba-toolporque penguiné a única conta de usuário que estará nela e haverá mais usuários do que agora).

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("/", "")

Eu tentei também com outro nome de usuário que não está no sistema. Isso não funciona.

Não consigo nem realizar um simples sudo samba-tool user listsem erros!

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"])

O que estou fazendo errado?

Respostas:


7

Tanto quanto sei, samba-toolé apenas para provisionamento do Active Directory (AC). Portanto, se você não configurou seu Samba como servidor AC, samba-tool user addnão funcionará.

Você deve se perguntar se precisa de um servidor Active Directory em sua rede ou precisa apenas de um servidor Samba simples apenas com seus próprios usuários.

No caso de você precisar de um servidor AC, siga o guia fornecido pelo próprio projeto samba ( https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO ). Mas esteja avisado, esta documentação não é compatível diretamente com o ubuntu e você precisa entender as coisas que dependem dela (DNS, Kerberos, LDAP).

Se você precisar apenas de um servidor simples que possua algumas Contas para seu próprio objetivo e forneça acesso a algumas pastas compartilhadas, siga os guias do samba3. O Samba4 é compatível com essas configurações do samba3 e, embora você precise smbpasswdcriar usuário no samba. Os "Guias Gerais de Samba" da documentação do servidor Ubuntu devem fornecer todas as informações necessárias.


7

Basta escrever isso no terminal:

smbpasswd -a penguin

E o usuário que você está adicionando precisa ser adicionado ao sistema Ubuntu, como um novo usuário.

Isso pode ser feito usando

sudo useradd penguin

ou

sudo adduser penguin

1

Estou preocupado que esse 'bug' possa ser mal categorizado, porque está aparecendo de muitas formas diferentes. Acabei de encontrar um relatório de erro que remonta a 2014, relatando exatamente a mesma coisa que encontrei:

lista de usuários do samba-tool ... falha repetidamente. Porém, todos os outros comandos que envolvem o samba-tool, exceto: samba-tool -V (que relata o número da versão corretamente)

Aqui está a dica (ou devo dizer 'uma dica') do iceberg:

acel: / mnt / nsd # samba-tool list lista de usuários Parâmetro desconhecido encontrado: "acl xattr update mtime" Ignorando parâmetro desconhecido "acl xattr update mtime" ERRO (ldb): exceção não capturada - ldb_search: invalid basedn '(null)' File " /usr/lib/python2.7/dist-packages/samba/netcmd/ init .py ", linha 175, em _run retorna o arquivo self.run (* args, ** kwargs)" /usr/lib/python2.7/ dist-packages / samba / netcmd / user.py ", linha 292, na execução attrs = [" samaccountname "]) acel: / mnt / nsd # lista de usuários da ferramenta samba ERRO (ldb): exceção não capturada - ldb_search: '(null)'
File "/usr/lib/python2.7/dist-packages/samba/netcmd/ init.py ", linha 175, em _run retorna self.run (* args, ** kwargs) Arquivo" /usr/lib/python2.7/dist-packages/samba/netcmd/user.py ", linha 292, em execução attrs = ["samaccountname"]) acel: / mnt / nsd # qual ldb ldb: comando não encontrado.

O problema? Depois de encontrar isso em um sistema, verifiquei o samba-tool em outros três sistemas independentes (todos Ubuntu), e o samba-tool também foi danificado. Encontrei algumas referências isoladas a manifestações semelhantes em relatórios de bugs, algumas voltando 4-6 anos. Eu também encontrei vários relatórios do bug que foram 'corrigidos' ... (essa variação não é corrigida).

Tudo o que eu queria era garantir que o banco de dados de usuário / senha do samba estivesse limpo, removendo um órfão, e eu não poderia. Claramente, se o samba-tool não estiver funcionando (e no meu caso, eu tenho 4 servidores executando o Samba, e não está funcionando em nenhum deles), ele precisa ser corrigido.

A única outra pista que posso oferecer: uma referência que li mencionou o recurso de sincronização de senhas no Samba como uma possível causa. Encontrei isso quando o samba encontrou um ID de usuário órfão do samba, que eu havia criado renomeando seu gêmeo original no arquivo / etc / passwd. Eu estava apenas tentando usar o samba-tool para remover o órfão. Mas suponho que seja possível que, quando o samba tentou sincronizar seu banco de dados do usuário com o sistema e encontrasse o usuário original ausente, algum dano foi causado. (?)

Esta não é uma resposta. É apenas uma sugestão de que o bug provavelmente ainda está por aí, e o melhor lugar para começar a verificar se você está afetado é executar funções simples da ferramenta samba, para ver se está funcionando corretamente:

'samba-tool user list' ou 'samba-tool dbcheck' por exemplo.

Todos os meus (1 V4.7 e 3 V4.3) estão quebrados. (Espero que isto ajude.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.