Linux public smb share

Creeping.Death

Rear Admiral
Registriert
Juni 2005
Beiträge
5.619
Hallo Leute, ich habe auf meinem NUC Ubuntu 22.04.2 LTS am Laufen.

Ich verwende dieses System für meine Smarthome-Spielereien, welche alle als Container laufen (docker-compose).

Bisher hatte ich die meisten "config"-Directories auf meinem Synology NAS angelegt (weil so für mich einfacher zu sichern über Snapshots).
Leider kommen nicht alle Docker-Images mit Netzwerk-Shares klar (z.B. MariaDB) und außerdem ist eine Netzwerkverbindung aus Performance-Sicht suboptimal.

Wie auch immer, ich möchte jetzt auch meine Homeassistant config lokal auf der SSD meines NUC haben.

Hierzu habe ich meine SSD unter /media/nucssd eingehängt.
Dort gibt es dann noch das Verzeichnis "docker" und darunter dann die config-Verzeichnisse für die jeweiligen Container.

Das ist soweit alles schön und gut. Alles lässt sich installieren und läuft.

Aber jetzt zu meinem eigentlichen Anliegen:
Leider bin ich ein "Voll-noob", was Linuxberechtigungen betrifft. :(

Ich möchte, dass der Pfad wo die config Verzeichnisse liegen als smb share für Windows zur Verfügung steht und zwar so, dass absolut jeder(!) sowohl unter Linux als auch Window hier volle Rechte (X,W,R) hat.

Einen smb share habe ich hinbekommen.

Meine smb.conf sieht so aus:
[global]
workgroup = smb
security = user
map to guest = Bad Password
[public]
path = /media/nucssd/docker
public = yes
writable = yes
comment = smb share
printable = no
guest ok yes
Das funktioniert soweit auch.

Aber:
Wenn irgendwelche neuen Unterordner oder Files aus dem Homeassistant-Container selbst heraus angelegt werden (Besitzer: root), dann sind diese unter Windows "Read only".

Dann muss ich über ssh erst wieder ein
sudo chmod -R 777 /media/nucssd/docker/nuc_homeassistant
ausführen.

Gibt es eine simple Möglichkeit um zu definieren, dass alles was ab der Ebene /media/nucssd/docker an Files und Folders erstellt, hinkopiert, modifiziert, ... wird, grundsätzlich für absolut jeden voll zugänglich ist ("777") - also wirklich "public"?
 
Code:
inherit permissions = yes

in der [global] section hinzufügen

und dann schauen dass der überordner entsprechende mask hat (z.b. 777)

gehts dann?
 
Achte bei der Verwendung von Samba (Windows-Protokoll) darauf, dass Du schnell komische Fehler bekommen kannst. Dateinamen und linuxeigene Berechtigungen werden entweder fehlerfrei, fehlerhaft, oder garnicht übertragen. Alles schon gehabt und fängt bei einfachen Dateinamen schon an. Grade Konfigurationsdateien sind da ja teilweise echt komisch aufgebaut
 
Redundanz schrieb:
Ich habe mal testweise die smb.conf aus /etc/samba in den share kopiert (also Linux->Linux):
1681142155389.png

Dann habe ich die Datei mal von Windows in das gleiche Verzeichnis kopiert:
1681142191289.png


Müsste da dann nicht "drwxrwxrwx" vorne stehen?
 
"d" steht nur bei ordnern vorneweg, smb.conf ist kein ordner

-> https://chmodcommand.com/chmod-2777/

setz mal den befehl auf deinen shared ordner ab.



edit: sambaserver hast du nach deinen vorigen änderungen (inherit...) restarted oder?
 
Redundanz schrieb:
setz mal den befehl auf deinen shared ordner ab.
Habe ich gemacht, leider ändert sich am Verhalten gegenüber vorher nichts.
Also direkt nach dem Absetzen des Befehls haben alle Objekte die volle Berechtigung (jetzt auch mit sgid bit).
Allerdings, findet nach wie vor keine Vererbung statt, wenn Files hinein kopiert werden.
Redundanz schrieb:
edit: sambaserver hast du nach deinen vorigen änderungen (inherit...) restarted oder?
Ja, mittels "sudo systemctl restart smbd.service".
Zur Sicherheit habe ich später sogar den kompletten Server durchgestartet.
 
ok letzter gedanke: wenn du das noch unter [public] reinhängst und smbd restartest...

Code:
create mask = 0777
force create mode = 0777
directory mask = 02777
force directory mode = 02777
 
Zurück
Oben