Como montar um compartilhamento CIFS via FSTAB e fornecer RW completo para o Guest

33

Quero criar uma pasta Pública que tenha acesso total ao RW. O problema com minha configuração é que os usuários do Windows não têm problemas como convidados (eles podem RW e Excluir), meu cliente Ubuntu não pode fazer o mesmo. Só podemos escrever e ler, mas não criar ou excluir.

Aqui está o meu smb.conf do meu servidor:

[global]
    workgroup = WORKGROUP
    netbios name = FILESERVER
    server string = TurnKey FileServer

    os level = 20
    security = user
    map to guest = Bad Password
    passdb backend = tdbsam
    null passwords = yes

    admin users = root
    encrypt passwords = true
    obey pam restrictions = yes
    pam password change = yes
    unix password sync = yes
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

    add user script = /usr/sbin/useradd -m '%u' -g users -G users
    delete user script = /usr/sbin/userdel -r '%u'
    add group script = /usr/sbin/groupadd '%g'
    delete group script = /usr/sbin/groupdel '%g'
    add user to group script = /usr/sbin/usermod -G '%g' '%u'

    guest account = nobody

    syslog = 0
    log file = /var/log/samba/samba.log
    max log size = 1000

    wins support = yes
    dns proxy = no

    socket options = TCP_NODELAY
    panic action = /usr/share/samba/panic-action %d


[homes]
    comment = Home Directory
    browseable = no
    read only = no
    valid users = %S

[storage]
    create mask = 0777
    directory mask = 0777
    browseable = yes
    comment = Public Share
    writeable = yes
    public = yes
    path = /srv/storage

A seguinte entrada FSTAB não produz acesso R / W completo ao compartilhamento.

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw 0 0

Isso também não funciona

//192.168.0.5/storage /media/myname/TK-Public/ cifs rw,guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0

Usar o seguinte local no Nemo / Nautilus sem o compartilhamento sendo montado funciona:

smb://192.168.0.5/storage/

Informação extra. Acabei de perceber que, se eu copiar um arquivo para o compartilhamento após a montagem, meu cliente Ubuntu imediatamente fará com que "ninguém" seja o proprietário, e o grupo "nenhum grupo" tenha lido e gravado, com todos os outros como somente leitura.

insira a descrição da imagem aqui

O que estou fazendo errado?

Kendor
fonte
Então, deixe-me ver: você pode montar o compartilhamento do seu cliente Ubuntu (como root, suponho que sejam dadas as entradas do fstab), então você pode ler e escrever, mas não pode excluir ou criar? Como é possível copiar (para copiar, criar um arquivo é obrigatório)?
janeiro

Respostas:

56

Acontece que eu preciso adicionar um UID local (cliente) à linha de montagem no FSTAB para fazer isso funcionar. Cheguei a isso por pura força bruta:

//192.168.0.5/storage /media/myname/TK-Public/ cifs guest,uid=myuser,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
Kendor
fonte
3
Um problema comum e nenhuma resposta ... Incrível!
dan3
Ohhh, exatamente o que eu precisava ... muito obrigado - procurando isso por horas!
Pkdkk 22/08/14
1
Outra dica: verifique se cifs-utilsestá instalado (para mim, não foi instalado no 16.04 após a instalação do "main" samba pkg). Se você não o tiver instalado, você receberá o erro 'bad fs / bad option'.
bshea
Depois que eu instalei, usei perms em outra resposta e adicionei: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 para /etc/fstabentão sudo mount -a. Parece montar / escrever bem agora.
bshea
Para mim, uma versão um pouco mais simples (sem uid) trabalhou para montar adequadamente R / W para todos os usuários um compartilhamento público de outra máquina linux://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo
6

O CIFS geralmente não tem nenhum conceito de usuário e grupo; portanto, montar um compartilhamento CIFs usará como padrão o usuário e o grupo como 'ninguém':

drwxdrwxdrwx. 3 nobody nobody 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 nobody nobody 0 Sep 29 09:00 ..

Como você não é 'ninguém', o Linux não permitirá que você escreva para qualquer coisa que não tenha permissão 0777, a menos que você use o sudo. Para corrigir isso, adicione uid = mylogin, gid = mygroup ao fstab e fará com que o compartilhamento apareça como se fosse seu próprio diretório:

drwxdrwxdrwx. 3 mylogin mygroup 0 Sep 29 09:00 .
drwxdrwxdrwx. 9 mylogin mygroup 0 Sep 29 09:00 ..

Agora você tem controle total sem a necessidade de sudo.

Isso não está realmente alterando nada no servidor, pois o servidor não está aplicando nada. Está dizendo ao Linux para fingir que você é o proprietário e fornecer acesso irrestrito.

maharvey67
fonte
1
Sim se estiver usando guest / ninguém / etc. Verifique se as pastas pai têm leitura / gravação / execução completa. Eu uso essa permissão em alguns compartilhamentos de rede internos - portanto, não é um problema de segurança. Voto votado
bshea
Mas, ao contrário do seu post - eu era capaz de usar o ID do usuário 'ninguém' (para montagem) quando havia opções corretas para montagem. Veja meus outros comentários ..
bshea
Essa é uma solução muito melhor do que definir permissões extensas para todos os arquivos montados. E isso funciona.
precisa saber é o seguinte
5

Você está quase lá. Abra o FSTAB usando:

sudo nano /etc/fstab

Na última linha (ou na das últimas linhas), coloque:

//192.168.0.5/storage /media/myname/TK-Public/ cifs username=YOURUSERNAME,password=YOURPASSWORD,iocharset=utf8,file_mode=0777,dir_mode=0777

*** (esta é uma linha longa)

Ctrl- Xfechar, Ysalvar e Enter para selar o acordo.

Agora reinicie por:

sudo reboot

E você deve ter controle total do compartilhamento de rede no seu dispositivo Linux!

AndyShap
fonte
1
Você pode substituir essa senha por uma senha de exemplo.
Spotlight
9
Não é necessário reiniciar para montar fstabentradas. Apenas mount <DEVICE>ou mount <MOUNTPOINT>ou mesmo mount -afazer o trabalho muito bem.
David Foerster
1

Eu tive esse problema e foi porque o usuário do compartilhamento não o possuía. Corrigi-o com "sudo chown {nome de usuário}: {nome de usuário} / {compartilhamento} / {caminho}" depois que eu pude mover e excluir arquivos.

Andrew Cleveland
fonte