Wie mounte ich eine CIFS-Freigabe über FSTAB und übergebe dem Gast die vollständige RW

33

Ich möchte einen öffentlichen Ordner mit vollem RW-Zugriff erstellen. Das Problem bei meiner Konfiguration ist, dass Windows-Benutzer keine Probleme als Gäste haben (sie können RW und Delete), mein Ubuntu-Client kann das nicht. Wir können nur schreiben und lesen, aber nicht erstellen oder löschen.

Hier ist die my smb.conf von meinem Server:

[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

Der folgende FSTAB-Eintrag bietet keinen vollständigen R / W-Zugriff auf die Freigabe.

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

Das funktioniert auch nicht

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

Die Verwendung des folgenden Speicherorts in Nemo / Nautilus ohne die bereitgestellte Freigabe funktioniert:

smb://192.168.0.5/storage/

Zusatzinformation. Ich habe gerade bemerkt, dass, wenn ich nach dem Mounten eine Datei auf die Freigabe kopiere, mein Ubuntu-Client sofort "nobody" zum Eigentümer macht und die Gruppe "no group" gelesen und geschrieben hat, wobei alle anderen schreibgeschützt sind.

Bildbeschreibung hier eingeben

Was mache ich falsch?

Kendor
quelle
Also, lassen Sie mich sehen: Sie können die Freigabe von Ihrem Ubuntu-Client aus mounten (als root nehme ich Ihre fstab-Einträge an), Sie können dann lesen und schreiben, aber Sie können nicht löschen oder erstellen? Wie kommt es dann, dass Sie kopieren können (zum Kopieren ist das Erstellen einer Datei ein Muss)?
Januar

Antworten:

56

Es stellte sich heraus, dass ich der Mount-Zeile in FSTAB eine lokale (Client-) UID hinzufügen muss, damit dies funktioniert. Ich bin mit bloßer Gewalt dazu gekommen:

//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
quelle
3
Ein häufiges Problem und überhaupt keine Antwort ... Erstaunlich!
Dan3
Ohhh, genau das, was ich brauchte ... vielen Dank - ich habe stundenlang danach gesucht!
pkdkk
1
Ein weiteres Problem: Stellen Sie sicher, dass cifs-utilses installiert ist (für mich wurde es nach der Installation von "main" samba pkg nicht unter 16.04 installiert). Wenn Sie es nicht installiert haben, erhalten Sie die Fehlermeldung 'Bad Fs / Bad Option'.
bshea
Nachdem ich das installiert hatte, verwendete ich perms in einer anderen Antwort und fügte hinzu: //10.20.30.40/share/mysharedir /mnt/mymountpoint cifs guest,uid=nobody,iocharset=utf8,noperm 0 0 zu /etc/fstabdann sudo mount -a. Scheint jetzt gut zu mounten / schreiben.
bshea
Für mich funktionierte eine etwas einfachere Version (ohne UID), um R / W für alle Benutzer einer öffentlichen Freigabe von einem anderen Linux-Rechner ordnungsgemäß bereitzustellen://server_name/share_name /media/local_mountpoint cifs guest,iocharset=utf8,file_mode=0777,dir_mode=0777,noperm 0 0
woohoo
6

CIFS kennt im Allgemeinen keine Benutzer- und Gruppenkonzepte. Wenn Sie also eine cifs-Freigabe aktivieren, werden Benutzer und Gruppe standardmäßig als "niemand" angezeigt:

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

Da Sie kein "Niemand" sind, können Sie unter Linux nur mit sudo auf etwas schreiben, das über die Berechtigung 0777 verfügt. Um dies zu beheben, fügen Sie uid = mylogin, gid = mygroup zu fstab hinzu, und die Freigabe wird so angezeigt, als wäre es Ihr eigenes Verzeichnis:

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

Sie haben jetzt die volle Kontrolle, ohne sudo zu benötigen.

Dies ändert eigentlich nichts am Server, da der Server nichts erzwingt. Linux wird angewiesen, sich als Eigentümer auszugeben und Ihnen uneingeschränkten Zugriff zu gewähren.

maharvey67
quelle
1
Ja, wenn guest / nobody / etc verwendet wird. Stellen Sie sicher, dass übergeordnete Ordner vollständige Lese- / Schreib- / Ausführungsrechte haben. Ich verwende diese Dauerwelle auf einigen internen Netzwerkfreigaben - es handelt sich also nicht um ein Sicherheitsproblem. Upvoted
bshea
Aber im Gegensatz zu Ihrem Beitrag konnte ich die Benutzer-ID "nobody" (zum Mounten) verwenden, wenn sie die richtigen Optionen zum Mounten hatte. Siehe meine anderen Kommentare ..
bshea
Dies ist eine weitaus bessere Lösung als das Festlegen umfassender Berechtigungen für alle an den bereitgestellten Dateien. Und es funktioniert.
j08lue
5

Du bist fast am Ziel. Öffnen Sie FSTAB mit:

sudo nano /etc/fstab

In der letzten Zeile (oder einer der letzten Zeilen) platzieren Sie:

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

*** (das ist alles eine lange Schlange)

Ctrl- um Xzu schließen, Yzu speichern und einzugeben, um das Geschäft zu besiegeln.

Jetzt neu starten durch:

sudo reboot

Und Sie sollten die volle Kontrolle über die Netzwerkfreigabe auf Ihrem Linux-Gerät haben!

AndyShap
quelle
1
Möglicherweise möchten Sie dieses Kennwort durch ein Beispielkennwort ersetzen.
Spotlight
9
Man muss nicht neu starten, um fstabEinträge zu mounten . Einfach mount <DEVICE>oder mount <MOUNTPOINT>oder sogar mount -aden Job gut machen.
David Foerster
1

Ich hatte dieses Problem und es lag daran, dass der Benutzer der Freigabe es nicht besaß. Ich habe es mit "sudo chown {username}: {username} / {share} / {path}" behoben, nachdem ich Dateien verschieben und löschen konnte.

Andrew Cleveland
quelle