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

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

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

Aqui está o que eu tinha antes e o que estou tentando realizar novamente. Eu tive 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. (janelas 7)

Agora, se eu tentar me conectar ao \Hostname, será solicitado um nome de usuário e uma senha. Se eu entrar no un pw, terei acesso total, mas não deveria; 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 causa disso. Alguma sugestão?

EDITAR:

Ugh, isso está me dando muita dificuldade. Estou tão perto.

Aqui está o que eu tenho.

Posso acessar o compartilhamento do Windows 7 iniciando e digitando \Hostname\Sharename mas sou solicitado a fornecer um nome de usuário e uma senha. Não posso simplesmente deixar em branco porque ele usará meu grupo de trabalho como domínio; então eu digito \ para o nome de usuário para apagá-lo e faço login com um nome de usuário e senha em branco. Ótimo, agora posso acessar os arquivos no compartilhamento.

Assim que entrar, 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 doméstico pode ler, escrever e executar. Então isso está funcionando.

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

Ainda arrancando os cabelos por causa disso. A pior parte é que a primeira vez que fiz isso há cerca de uma semana, gastei cerca de 30 minutos nisso 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 conecte à minha rede pode ver o NAS em Netowork e acessá-lo. A chave era definir a segurança como security = share. Eu sei, está obsoleto, mas funciona e security = user e map to user = bad user não estavam funcionando para mim.

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

Dessa forma, posso definir o diretório como 775 e poderei escrever porque estou ingressado no grupo de trabalho, mas outros usuários só podem ler e executar.

Responder1

Aconteceu de tropeçareste tópico nos fóruns do Ubuntue pensei que poderia ajudar. Ele explica as etapas que acontecem nos bastidores:

No Windows, o nome de usuário e a senha do cliente são enviados automaticamente quando ele procura 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 requer autenticação.

Quando esse nome de usuário for passado, o Samba procurará esse usuário em seu banco de dados de senhas:

  • Se não houver correspondência com o nome de usuário, o usuário cliente será marcado como "Usuário Mau" e convertido (mapeado) para a conta de convidado que por padrão é "ninguém".

  • Se encontrar uma correspondência com o nome de usuário e houver uma senha do samba que corresponda àquela enviada pelo cliente Windows, o usuário do Windows obterá acesso automaticamente, embora não como um usuário anônimo, e é por isso que você precisou adicionar "forçar usuário = ninguém" para 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, será solicitada uma senha - mesmo para um compartilhamento de convidado.

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

Editar 20/02/2013:

Está testparmretornando um código de saída diferente de zero? Mesmo assim, eu iria em frente e daria uma boa olhada nessa área da configuração. Além disso, não tenho certeza de quã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úscula. Confira aPáginas de manual do Sambapara as opções que você está usando e verifique tudo.

Responder2

É assim que o OpenElec está configurado. Deve fazer o que você está pedindo. (mesmo que seja um ano depois... talvez ajude no próximo) Basta ajustar 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

Responder3

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

Abaixo estão as condições necessárias para garantir que os clientes SMB não solicitarão 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 proprietária das 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 terá acesso aos dados do seu compartilhamento.

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

  2. Certifique-se de que você [shareXYZ]tem guest ok = yes.

    Set browsable = yes, mas geralmente é herdado de [global]e é definido yespor padrão.

Então, provavelmente security = usertambém deve ser definido (este é o padrão quando você não tem o Active Directory configurado em seu ambiente). Porém, não tenho certeza se esse sinalizador é necessário, pois não tenho AD em meu ambiente.

Claro, se você quiser que o nobodyusuário funcione, então você pode simplesmente chown -Rh 65534:65534 /yourshare, depois disso você ficará bem apenas com a configuração única guest ok = yesem seu [shareXYZ].

Observe que definir rwxcomo others( chmod o+rwx /yourshare) não permitiu que o Samba e seu nobodyusuário entrassem no compartilhamento. 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.

Responder4

Esta provavelmente não será a solução para todos com esse problema, mas meu problema foi devido às permissões do diretório pai em que o diretório compartilhado estava. Assim que habilitei "Ler por outros", consegui acessar anonimamente a partilha. Isso me pegou um pouco de surpresa, pois nos servidores Windows as permissões do diretório pai não importam para o diretório compartilhado.

Então meu caminho fica assim:

/data1/Downloads 

Tive que habilitar "lido por outros" no data1diretório.

Eu não precisei de nada de especial smb.conf, minha entrada de compartilhamento ficou assim ...

[Downloads]
path = /data1/Downloads
browseable = yes
read only = yes
guest ok = yes
public = yes

informação relacionada