ubuntuusers.de

Samba und Benutzer mit ungewöhnlichen Rechten

Status: Ungelöst | Ubuntu-Version: Server 20.04 (Focal Fossa)
Antworten |

holger56779

Anmeldungsdatum:
14. Februar 2018

Beiträge: 51

Hallo an alle, ein Kumpel möchte einen smb/Samba-Serverdienst mit etwas unüblichen Rechten betreiben. Er bezeichnet es als "Archiv", in das mehrere Benutzer neue Dateien hochladen dürfen, aber danach keine Datei mehr verändern oder löschen, die dort gespeichert ist.

Kann man bei smb/Samba einem Client-PC oder mehreren Windows-Benutzern erlauben, neue Dateien auf den Samba-Server hochzuladen, aber direkt danach genau diesem Client-PC das Verändern und das Löschen seiner Dateien, die er gerade selber hochgeladen hat zu verbieten?

(Ich weiß, dass es sehr komisch klingt, aber er will so das unabsichtliche Löschen von Dateien verhindern.)

Falls ja, wie wird das in der smb.conf eingestellt?

Vielen Dank für Eure Antworten Holger

praseodym Team-Icon

Supporter
Avatar von praseodym

Anmeldungsdatum:
9. Februar 2009

Beiträge: 22111

Wohnort: ~

Moderiert von praseodym:

Dieses Thema ist verschoben worden. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“)!

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Solche Fragen gab es hier schön öfter. Die übliche Lösung war entweder auf einen cronjob oder systemd-timerunit zurück zu greifen, die regelmäßig die Dateirechte entsprechend ändert ODER alternativ eine Lösung mittels inotify realisiert. Direkte Lösungen für Samba gab es damals imho nicht.

Tatsächlich wäre das Thema wohl mal eine Idee für einen How To Wiki Artikel. Evtl. kann man das Verhalten durch eine Kombination von force user oder force create mode erreichen.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9775

Wohnort: Münster

Über das Rechtesystem lässt sich die Aufgabenstellung nicht lösen, weil:

  • Wer eine Datei anlegen können soll, benötigt Schreibrechte im Verzeichnis.

  • Wer Schreibrechte in einem Verzeichnis hat, kann Dateien löschen.

Es geht mit zusätzlicher Programmierung: Nach Abschluss des Schreibvorgangs und Schließen der gerade angelegten Datei wird sie in ein Verzeichnis verschoben, in dem der Ersteller keine Schreibrechte hat.

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Ich bin mir nicht sicher, ob das so stimmt. Über Samba kann man ja auch den Benutzer / die Gruppe und die create mask vorgeben.

Beispiel:

Auf dem Server gibt es ein Verzeichnis, das dem Benutzer client / der Gruppe client gehört (770). Dieses Verzeichnis ist auch per Samba freigegeben.

Der Client verbindet sich mit der Kennung client auf den Server und kann schreiben (da 770). Sobald Dateien geschrieben werden, wird per Samba ein Benutzer / eine Gruppe ungleich client gesetzt (force user) und die Rechte der Datei auf 770 gesetzt (create mask). Im Ergebnis dürfte der Client die Datei nicht mehr öffnen können, da er nicht mehr über die (lokal auf dem Server wirkenden) Rechte verfügt. Das Schreiben neuer Dateien dürfte allerdings ohne Probleme möglich sein.

Testen kann ich es derzeit aber nicht...

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9775

Wohnort: Münster

chr123 schrieb:

[…] Sobald Dateien geschrieben werden, wird per Samba ein Benutzer / eine Gruppe ungleich client gesetzt (force user) und die Rechte der Datei auf 770 gesetzt (create mask).

Weder "force user" noch "create mask" funktionieren so, wie Du vermutest. Sondern:

  • "force user" beeinflusst das Ergebnis der Anmeldung am Server, bevor irgendeine Dateioperation zugelassen wird. Anschließende Dateioperationen (Lesen, Schreiben, Durchsuchen) werden mit den Rechten eben dieses Benutzers durchgeführt und dabei ggf. noch über Samba-Restriktionen gefiltert.

  • "create mask" wirkt in dem Moment, wenn die Datei angelegt wird. Also bevor überhaupt in sie geschrieben werden kann. Und ganz gleich, wie die Berechtigungen einer Datei selbst aussehen, diese sind unerheblich für die Frage, ob ein bestimmter Benutzer diese Datei löschen darf oder nicht.

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Das war grundsätzlich auch nur eine Idee, ohne es im Detail durchzugehen. In der Theorie könnte es aber (fast) allein mit Boardmittel von Samba gehen. Einzig das Sticky Bit müsste gesetzt werden.

1
2
3
4
sudo mkdir /opt/samba/ #share anlegen
sudo chown root:nogroup /opt/samba #Eigentümer setzen; in dem Fall nogroup wg Gastzugang von Samba
sudo chmod u=rwx,g=rwx,o= -R /opt/samba #Rechte setzen
sudo chmod +t -R /opt/samba #Sticky setzen

In der smb.conf:

[Einmalig]
path = /opt/samba
guest ok = yes
force group = nogroup
create mask = 0000
force create mode = 0000 #dadurch kann man die Datei nicht öffen, auisgenommen natürlich root
read only = no
inherit owner = yes #entspricht root, damit dürfte man neu erstellte Dateien auch nicht überschreiben / löschen können 

Im Prinzip dürfte sich damit "root" auf alle Dateien vererben, die im Share angelegt werden. Durch das Sticky Bit dürfte der "normale" Benutzer eigentlich keine Löschrechte haben. Da die create mask / create mode auf 000 gesetzt ist, dürfte man die Datei nicht mal lesen können. Ggf. müsste man noch Ordner betrachten und nicht nur Dateien.

Für's detaillierte Testen dieser Idee und ggf. ein Wiki Howto erstellen habe ich derzeit aber keine Zeit.

holger56779

(Themenstarter)

Anmeldungsdatum:
14. Februar 2018

Beiträge: 51

Hallo an alle

herzlichen Dank für Eure Informationen. Ich soll nochmal nachfragen, ob es deutlich leichter geht, wenn er das Dateisystem //wiki.ubuntuusers.de/Archiv/ZFS_on_Linux/:ZFS benutzt. Da gibt es die expliziten Rechte / Operationen

add_file

und

append

Kann man nur das mit Samba/SMB benutzen, also erlauben und alle anderen Dateioperationen verbieten?

Vielen herzlichen Dank für weitere Tipps Holger

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Mit ZFS kenn ich mich nicht aus. Hast du / habt ihr mal die (konventionelle) Methode mit Sticky Bit probiert?

Antworten |