Wie richte ich die Samba-Freigabe so ein, dass sie als bestimmter Benutzer bereitgestellt wird?

9

Ich möchte eine Samba-Freigabe erstellen, mit der Benutzer als bestimmte Samba-Benutzer eine Verbindung herstellen können. Ich habe einen Benutzer erstellt, sagen wir Henry, und ich möchte Speicher in seinem Haus machen.

Also habe ich in meiner /etc/samba/smb.conf:

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

Wenn ich mich jetzt über smbclient verbinde, ist alles in Ordnung. Ich möchte diese Freigabe jedoch als CIFS bereitstellen. Ich kann:

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

Wenn ich dann versuche, eine Datei in / media / remote-share zu erstellen, wird mir die Berechtigung verweigert :(

Wie soll ich es konfigurieren, wenn jeder dort Zugriff haben soll, aber als bestimmter Benutzer, nicht als Gast?

Sowohl Server als auch Client sind Ubuntu-Maschinen.

Amorfis
quelle
Haben Sie versucht, "-o user = henry" direkt nach "-t cifs" zu setzen? Die Syntax für mount (und die übliche Praxis bei Unixen) besagt, dass Optionen dem Befehl folgen. Vielleicht wird -o in Ihrem Befehl ignoriert, weil Sie es am Ende des Befehls platziert haben?
Anonym
Nein, es wird nicht ignoriert. Ohne dies wäre ich nicht in der Lage, es zu mounten, es gibt "guest ok = no". Ich kann Dateien mounten und sehen, ich kann einfach keine neuen erstellen.
Amorfis

Antworten:

13

ok, ich habe deine Frage noch einmal gelesen und habe eine andere Antwort.

Wenn Sie es in / etc / fstab oder mit sudo mount über die Befehlszeile bereitstellen, müssen Sie die uid und gid sowie optional auch die umask (file_mode und dir_mode) festlegen, damit lokale Benutzer auf dem Client die Freigabe verwenden können. Andernfalls gehört es standardmäßig root und W nur ​​root. und es tut wahrscheinlich nicht weh, es explizit als RW zu mounten.

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

Dabei sind xxx und yyy der lokale (für den Client lokale) Benutzer und die Gruppe, die die Freigabe "besitzen" sollen, wenn sie bereitgestellt wird. Wenn nur ein lokaler Benutzer Zugriff benötigt, spielt die GID wahrscheinlich keine Rolle. Wenn mehrere lokale Benutzer Zugriff benötigen, muss die GID festgelegt werden und jeder lokale Benutzer, der Zugriff benötigt, muss Mitglied dieser GID sein.

Abhängig von Ihrer Netzwerkeinrichtung müssen möglicherweise andere Optionen festgelegt werden (z. B. müssen Sie möglicherweise die Domäne angeben). Weitere Informationen finden Sie in der Manpage zu mount.cifs (8).

Übrigens, lesen Sie die Hinweise zur Anmeldeinformationsdatei, wenn Sie sie aus / etc / fstab mounten. fstab ist weltweit lesbar und daher kein guter Ort, um Passwörter einzugeben. Eine Anmeldeinformationsdatei kann dem Root-Modus 600 gehören.

cas
quelle
Ich denke, das ist die Antwort. Ich werde es heute Abend versuchen. Vielen Dank!
Amorfis
Ich denke, meine beiden Antworten sind relevant. Eine Antwort befasst sich mit der Serverseite, die andere mit der Clientseite. Viel Glück, hoffe es funktioniert für Sie.
Cas
Der Befehl, den Sie in dieser Antwort gegeben haben, gibt mir einen Verwendungsfehler
Edward Torvalds
1
@edwardtorvalds Mount-Optionen können sich im Laufe von 6 Jahren ändern.
Cas
6

Der Befehl mount befindet sich auf der Clientseite und steuert nicht, was der Server zulässt.

Sie müssen die Freigabe auf dem Server einrichten, damit jeder in einer bestimmten Gruppe ("gültige Benutzer = Gruppenname") eine Verbindung zur Freigabe herstellen kann, und dann die Verbindung als Benutzer henry erzwingen ("user = henry erzwingen"). unabhängig davon, mit welchem ​​Benutzernamen / Passwort sie sich tatsächlich angemeldet haben.

Auf Ubuntu hat Henry wie auf Debian wahrscheinlich bereits eine eigene Gruppe (Adduser auf Debian erstellt standardmäßig eine Gruppe für jeden Benutzer), aber verwenden Sie diese nicht, es sei denn, Sie möchten, dass jeder in dieser Gruppe Zugriff auf alle Henrys hat Dateien und nicht nur die in der Freigabe.

Erstellen Sie beispielsweise eine Unix- (oder LDAP- oder Active Directory-) Gruppe mit dem Namen "henry-share-g" und fügen Sie dieser Gruppe jeden hinzu, der Zugriff auf die Freigabe benötigt.

Konfigurieren Sie dann die Freigabe in Samba so, dass die Berechtigungen so festgelegt werden, dass Dateien von Benutzer und Gruppe RW erstellt werden und Verzeichnisse von Benutzer und Gruppe RWX erstellt werden UND setgid (sodass neue Dateien / Verzeichnisse mit der Gruppe 'henry-share-g' erstellt werden). ).

zB so etwas:

[mein Anteil]
    Pfad = / home / henry
    Sicherheitsmodus erzwingen = 0664
    Verzeichnissicherheitsmodus erzwingen = 2775
    Erstellungsmodus erzwingen = 0664
    Verzeichnismodus erzwingen = 2775
    schreibgeschützt = Nein
    durchsuchbar = Ja
    Benutzer erzwingen = Henry
    Kraftgruppe = Henry-Share-g
    gültige Benutzer = + henry-share-g

In diesem Beispiel sind die Dateien und Verzeichnisse weltweit lesbar sowie RW nach Benutzer und Gruppe. Wenn Sie das nicht möchten, verwenden Sie 0660 für Dateien und 2770 für Verzeichnisse.

Übrigens ist das Obige ungefähr das, was ich auf meinem Samba-Server bei der Arbeit mache, wenn einer der Professoren möchte, dass eine Gruppenfreigabe für alle in seiner Forschungsgruppe verwendet werden kann.

Der einzige wirkliche Unterschied ist, dass ich kein vorhandenes Benutzerkonto verwende. Ich erstelle einen dedizierten Benutzer in AD für die Freigabe sowie eine dedizierte Gruppe, da eine Trennung zwischen den persönlichen Dateien des Profis und den Dateien seiner Forschungsgruppe erforderlich ist. Ich habe auch ein Kontingent für diesen Benutzer und diese Gruppe festgelegt, das vom persönlichen Kontingent des Benutzers getrennt ist. dh ich würde so etwas wie "henry-share-u" erstellen und verwenden, anstatt das vorhandene "henry" -Konto zu verwenden.

cas
quelle
Ich fürchte, es funktioniert nicht :( Ich habe eine Gruppe auf dem Server erstellt, Benutzer Henry hinzugefügt, die smb.conf so konfiguriert, wie Sie es gesagt haben, und es ist immer noch dieselbe. Ich kann Dateien über smbclient ablegen, aber nicht, wenn ich sie einbinde Teilen durch "mount". Und ja, ich habe Samba nach dem Bearbeiten von
smb.conf
Mir ist auch eine seltsame Sache aufgefallen. Wenn ich Dateien von smbclient ablege, erhalten sie die Berechtigungen rwxrw-r--. Dies ist nicht das, was wir in smb.conf eingestellt haben, oder?
Amorfis
In Ihrer smb.conf muss sich noch etwas anderes befinden, das sich auf diese Freigabe auswirkt. Vielleicht die Standardfreigabe "[Häuser]"? Versuchen Sie entweder, die Freigabe umzubenennen und von unter / home zu verschieben, oder deaktivieren Sie die Freigabe [home] vorübergehend. und suchen Sie nach anderen Einstellungen oder Freigaben, die die Freigabedefinition überschreiben könnten.
Cas
Je mehr ich darüber nachdenke, desto wahrscheinlicher scheint es, dass genau das passiert. Wenn es einen Benutzer namens henry gibt, greift der Zugriff auf eine Freigabe namens "henry" auf die von [home] definierte Freigabe zu, unabhängig von einer nachfolgenden Definition einer Freigabe namens henry. Das Umbenennen der Freigabe in etwas, das nicht mit der Anmeldung eines Benutzers übereinstimmt, sollte also funktionieren.
Cas
[Häuser] Aktie ist auskommentiert. (Ich habe die Standardeinstellung hier nicht geändert). Ich werde versuchen, den Freigabenamen zu ändern.
Amorfis
1

Dies hängt vom passdb-Backend ab, das Sie in Ihrer smb.conf ausgewählt haben.

Wenn Sie die Verwendung tdbsamBackend (empfohlen von Samba) und stellen Sie securityauf user:

security = user
passdb backend = tdbsam

Sie können verwenden /usr/bin/smbpasswd, um Samba-Benutzer hinzuzufügen:

  1. Fügen Sie mit einen UNIX-Benutzer hinzu /usr/sbin/useradd
  2. Samba-Benutzer smbpasswd -L -a <user>hinzufügen mit (-L: lokaler Modus, -a: Benutzer hinzufügen)
  3. Ordnen Sie Ihre Benutzer mit /etc/samba/smbusers[Syntax: <unix-user> = <smb-user1> <smb-user2> <smb-userN>]

Die Pfade können sich in Ihrer GNU / Lunux-Distribution verschieben.

Manuel Faux
quelle
Nun, ich werde es versuchen, aber auf diese Weise müssen sich alle Benutzer als sie selbst anmelden, oder? Ich kann nicht jedem "Henry" geben? Wenn dem so ist, hilft es nicht, weil ich den Mount-Eintrag in / etc / fstab einfügen und ihn automatisch für alle mounten lassen möchte.
Amorfis
Ich glaube, ich folge Ihrer Frage nicht, aber Sie können »henry« trotzdem in mehr als einer Zeile (= mehr als einem UNIX-Benutzer) in der /etc/samba/smbusersDatei auflisten.
Manuel Faux