Como configurar o compartilhamento de samba para ser montado como usuário específico?

7

Eu quero criar um compartilhamento de samba para o qual os usuários podem se conectar como usuário específico do samba. Eu criei usuário, digamos henry, e quero fazer armazenamento em sua casa.

Então eu tenho no meu /etc/samba/smb.conf:

[myshare]
  path = /home/henry
  browsable = yes
  read only = no
  guest ok = no
  create mask = 0644

Agora, quando me conecto pelo smbclient, tudo está bem. Mas eu quero montar esse compartilhamento como CIFS. Eu posso fazer:

sudo mount -t cifs //myserver/myshare /media/remote-share -o user=henry

Mas quando tento criar um arquivo em / media / remote-share, obtenho permissão negada: (

Como devo configurá-lo se quiser que todos tenham acesso lá, mas como usuário específico, não como convidado?

Tanto o servidor quanto o cliente são máquinas Ubuntu.

    
por amorfis 02.08.2009 / 21:26

3 respostas

7

ok, eu releio sua pergunta e tenho outra resposta.

quando você monta em / etc / fstab ou com sudo mount a partir da linha de comando, você precisa definir o uid e gid e, opcionalmente, o umask também (file_mode e dir_mode) para que os usuários locais no cliente possam usar o compartilhamento . caso contrário, o padrão será pertencer a root e W somente por raiz. e provavelmente não faz mal montá-lo explicitamente como RW.

sudo mount -t cifs //myserver/myshare /media/remote-share \
  -o rw,user=henry,uid=xxx,gid=yyy

onde xxx e yyy são o local (local para o cliente, isto é) usuário e grupo que devem "possuir" o compartilhamento quando ele é montado. se for apenas um usuário local que precisa de acesso, o gid provavelmente não importa. se vários usuários locais precisarem de acesso, o gid deverá ser configurado e todos os usuários locais que precisarem de acesso deverão ser membros desse gid.

Há outras opções que talvez precisem ser definidas, dependendo da sua configuração de rede (por exemplo, você pode precisar especificar o domínio). veja a manpage do mount.cifs (8) para mais detalhes.

BTW, veja as notas sobre o arquivo de credenciais se você estiver montando a partir do / etc / fstab. fstab é legível pelo mundo, então não é um bom lugar para colocar senhas. um arquivo de credenciais pode ser de propriedade do modo root, 600.

    
por 03.08.2009 / 13:25
6

o comando mount está no lado do cliente e não controla o que o servidor permite.

você precisa configurar o compartilhamento no servidor para que qualquer pessoa em um determinado grupo ("usuários válidos = groupname") possa se conectar ao compartilhamento e forçar a conexão a ser como usuário Henry ("forçar usuário = henry "), independentemente de qual nome de usuário / senha eles realmente logaram.

no ubuntu, como no debian, henry provavelmente já tem seu próprio grupo dedicado (adduser nos padrões debian para fazer um grupo para cada usuário), mas não use isso, a menos que você queira que todos nesse grupo tenham acesso a todos os arquivos do Henry em vez de apenas aqueles no compartilhamento.

por exemplo. crie um grupo unix (ou ldap ou Active Directory) chamado "henry-share-g" e adicione qualquer um que precise acessar o compartilhamento para esse grupo.

configure o compartilhamento no samba para definir as permissões de modo que os arquivos sejam criados como RW por usuário & grupo e diretórios são criados RWX por usuário & group AND setgid (para que novos arquivos / dirs sejam criados com o grupo 'henry-share-g').

por exemplo. algo assim:

[myshare]
    path = /home/henry
    force security mode = 0664
    force directory security mode = 2775
    force create mode = 0664
    force directory mode = 2775
    read only = No
    browseable = Yes
    force user = henry
    force group = henry-share-g
    valid users = +henry-share-g

este exemplo torna os arquivos e diretórios legíveis para o mundo, bem como o RW por usuário & grupo. se você não quiser, use 0660 para arquivos e 2770 para diretórios.

BTW, o acima é aproximadamente o que eu faço no meu servidor samba no trabalho sempre que um dos professores quer uma participação em grupo para que todos em seu grupo de pesquisa possam usar.

a única diferença real é que não uso uma conta de usuário existente. Eu crio um usuário dedicado no AD para o compartilhamento, bem como um grupo dedicado, porque é necessário que haja uma separação entre os arquivos pessoais do prof e os arquivos de seu grupo de pesquisa. Eu também defino uma cota para esse usuário & grupo, que é separado da cota pessoal do usuário. ou seja, eu criaria e usaria algo como "henry-share-u" em vez de usar a conta "henry" existente.

    
por 02.08.2009 / 23:18
1

Isso depende do backend passdb que você escolheu no seu smb.conf.

Se você usar o backend tdbsam (recomendado pelo samba) e definir security to user :

security = user
passdb backend = tdbsam

Você pode usar /usr/bin/smbpasswd para adicionar usuários do samba:

  1. Adicionar um usuário do UNIX usando /usr/sbin/useradd
  2. Adicione o usuário do samba usando smbpasswd -L -a <user> (-L: modo local, -a: adicione usuário)
  3. Mapeie seus usuários usando /etc/samba/smbusers [Sintaxe: <unix-user> = <smb-user1> <smb-user2> <smb-userN> ]

Os caminhos podem adiar sua distribuição GNU / Lunux.

    
por 02.08.2009 / 22:24