Configurando um compartilhamento Samba público anônimo para ser acessado via Windows 7 e XBMC


9

Portanto, devo começar dizendo que fiz isso com sucesso há menos de uma semana e que não tive problemas, mas desde então reformatei e reconfigurei meu servidor e agora estou tendo mais dificuldade em lembrar como o fiz.

Aqui está o que eu tinha antes e o que estou tentando realizar novamente. Eu tinha um compartilhamento público de samba no servidor Ubuntu. Qualquer pessoa na minha rede pode acessar o compartilhamento e seu conteúdo simplesmente digitando \ Hostname. Nenhuma senha necessária. Os usuários que não estavam no grupo de trabalho do compartilhamento tinham acesso de leitura, mas os usuários que estavam no grupo de trabalho tinham acesso de leitura / gravação. (Windows 7)

Agora, se eu tentar me conectar a \ Hostname, será solicitado um nome de usuário e senha. Se eu entrar na un pw, tenho acesso total, mas não preciso; minhas configurações atuais são ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Estou puxando meu cabelo por cima desse. Alguma sugestão?

EDITAR:

Ugh, isso está me dando um tempo tão difícil. Estou tão perto.

Aqui está o que eu tenho.

Posso acessar o compartilhamento no Windows 7, iniciando e digitando \ Hostname \ Sharename, mas é solicitado um nome de usuário e senha. Não posso deixá-lo em branco porque ele usará meu grupo de trabalho como domínio; então, digite \ para o nome de usuário para limpá-lo e efetue login com um nome de usuário e uma senha em branco. Ótimo agora posso acessar os arquivos no compartilhamento.

Uma vez dentro, a configuração do grupo de trabalho está funcionando corretamente. Se eu estiver em um computador com o GRUPO DE TRABALHO padrão, posso ler e executar; um computador no meu grupo de trabalho em casa pode ler a gravação e a execução. Então está funcionando.

O problema é que ele não deveria estar solicitando uma senha. Deve ser totalmente público para qualquer pessoa na rede. Estou tentando compartilhá-lo com o XBMC e ele nem aparece sob smb no gerenciador de arquivos. Também não consigo acessá-lo manualmente a partir do XBMC. Eu recebo um erro de conexão recusada.

Ainda puxando o cabelo por causa disso. A pior parte é a primeira vez que fiz isso cerca de uma semana atrás, gastei cerca de 30 minutos e funcionou perfeitamente. Agora provavelmente passei pelo menos 4 horas e ainda não está funcionando.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

ATUALIZAÇÃO: Portanto, o compartilhamento agora está disponível na minha rede, independentemente do grupo de trabalho. Qualquer usuário do Windows que se conectar à minha rede pode ver o NAS no Netowork e acessá-lo. A chave foi definir segurança como security = share. Eu sei, está obsoleto, mas funciona e segurança = usuário e mapa para usuário = usuário ruim não estava funcionando para mim.

De qualquer forma, agora parece que quem se conecta ao compartilhamento obtém permissões globais unix do diretório, o que é gerenciável, mas quero que os usuários que ingressaram no grupo de trabalho especificado no smb.conf obtenham permissões de grupo unix.

Dessa forma, eu posso definir o diretório para 775 e poderei escrever porque ingresso no grupo de trabalho, mas outros usuários podem apenas ler e executar.


Você deve conseguir mapear os usuários do grupo de trabalho para obter permissões específicas com um arquivo de mapa de nome de usuário: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Respostas:


8

Aconteceu de encontrar esta discussão nos fóruns do Ubuntu e achei que poderia ajudar. Explica os passos que acontecem nos bastidores:

No Windows, o nome de usuário e a senha do cliente são enviados automaticamente quando ele procura por compartilhamentos - isso é feito sem o conhecimento do usuário. Isso força o Samba a lidar com as credenciais enviadas, mesmo que seja um compartilhamento de convidado que não exija autenticação.

Quando esse nome de usuário é passado, o Samba pesquisará no seu banco de dados de senhas esse usuário:

  • Se não houver correspondência com o nome de usuário, o usuário do cliente é identificado como "Usuário inválido" e convertido (mapeado) na conta de convidado, que por padrão é "ninguém".

  • Se encontrar uma correspondência com o nome de usuário e houver uma senha de samba que corresponda à enviada pelo cliente Windows, o usuário do Windows obterá acesso automaticamente, embora não seja um usuário anônimo, e é por isso que você adicionou "force user = nobody" a sua definição de compartilhamento.

  • Se encontrar uma correspondência com o nome de usuário, mas a senha do samba não corresponder exatamente à senha enviada automaticamente pelo cliente Windows, você será solicitado a fornecer uma senha - mesmo para um compartilhamento de convidado.

Tente adicionar force user = nobodyà sua definição de compartilhamento e veja se faz isso.

Editar 20/02/2013:

O testparmretorno de um código de saída é diferente de zero? Mesmo assim, eu daria uma olhada boa e dura nessa área da configuração. Além disso, não tenho certeza de como o smb.conf diferencia maiúsculas de minúsculas, mas todos os exemplos que vejo (por exemplo) map to guest = Bad Usertêm B e U em maiúsculas. Confira as páginas de manual do Samba para as opções que você está usando e verifique tudo.


Hey Bryce, Obrigado por responder. Consegui fazer um pequeno progresso desde a minha pergunta original, mas ainda estou tendo o mesmo problema. Eu consegui configurar meu compartilhamento (estou chamando de compartilhamento) para que qualquer pessoa no grupo de trabalho, definida nas configurações globais no smb.conf, possa ir direto ao assunto - não é necessária senha. Continuando no próximo comentário ...
George Falou

Aqui estão as configurações do compartilhamento: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes Se eu adicionar, force user = nobodyele será interrompido e não consigo acessar o compartilhamento. Aqui é onde fica estranho; Quando executo o testparm, ele despeja. [Shares] path = /home/shares read only = no guest ok = yesPor algum motivo, é como se não estivesse vendo as definições públicas, graváveis, disponíveis e navegáveis. Este poderia ser um indicador de onde está o problema.
George Spake

@GeorgeSpake edit made ...
Aaron

1
Eu acho que o testparm cospe as coisas dessa maneira. Tudo está em minúsculas no arquivo conf. Também descobri e preciso verificar isso que o testparm apenas despeja definições não padrão, o que explicaria por que alguns resultados são omitidos.
George Falou

A atualização recente do samba 4.3.11+dfsg-0ubuntu0.14.04.3no Ubuntu 14.04 quebrou meu compartilhamento público, force user = nobodyé apenas a correção de que eu precisava para trazer o compartilhamento público de volta.
Antony

7

É assim que o OpenElec está configurado. Deve fazer o que você está pedindo. (mesmo que seja um ano depois ... talvez ajude o próximo) Apenas ajuste as configurações de compartilhamento conforme necessário.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes

Obrigado por esta adição! Eu tenho me esforçado para obter um compartilhamento público trabalhando com o Windows 8.1. Essas configurações foram suficientes.
davidmdem

13
URGH! "conta de convidado = root". Isso significa que as contas de convidados são mapeadas para raiz, ou seja, têm permissões irrestritas para fazer qualquer coisa. TENHA MUITO CUIDADO! DRAGÕES À FRENTE!
precisa saber é o seguinte

0

Como a pesquisa do Google nos traz aqui e não há uma resposta clara, eu resumi.

Abaixo estão as condições necessárias para garantir que os clientes SMB não solicitem o nome de usuário e a senha ao acessar o servidor Samba:

  1. Adicione guest account = <owner-of-your-shares>em uma [global]seção. É importante que a conta do proprietário de suas ações tenha acesso a elas. Se você não fizer isso, o Samba assumirá que a conta de convidado é um nobodyusuário que provavelmente não tem acesso aos dados em seu compartilhamento.

    Como alternativa, você pode especificar force user = <owner-of-your-share>em seu [shareXYZ]bloco.

  2. Verifique se o seu [shareXYZ]tem guest ok = yes.

    Definir, browsable = yesmas geralmente é herdado de [global]e é definido como yespadrão.

Em seguida, provavelmente security = usertambém deve ser definido (isso é o padrão quando você não tem o Active Directory definido no seu ambiente). No entanto, não tenho certeza se esse sinalizador é necessário, pois não tenho AD no meu ambiente.

Obviamente, se você quiser que o nobodyusuário trabalhe, poderá fazê-lo chown -Rh 65534:65534 /yourshare. Depois disso, você ficará bem apenas com a configuração única guest ok = yessob o seu [shareXYZ].

Observe que ter definido rwxcomo others( chmod o+rwx /yourshare) não permitiu que o Samba com seu nobodyusuário participasse. Eu verifiquei isso com strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Provavelmente o Samba simplesmente ignora as permissões definidas para o others? Não tenho certeza.


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.