Univention Bugzilla – Bug 12024
Lokale Share-Konfiguration per UCR
Last modified: 2023-03-25 06:46:47 CET
Die Konfiguration von Samba und Samba-Shares soll per UCR für rein lokale Einstellungen möglich sein. Dazu wird ein zusätzliches Paket implementieriert. Die genaue Umsetzung ist im Reservierungssystem-Konzept beschrieben.
Felix, bitte das Paket "univention-samba" im Reservierungssystem-Scope um ein entsprechendes Binärpaket erweitern.
Es gibt jetzt im scope reservation das paket "univention-samba-local-config", dies enthält ein Template für smb.conf und ein script, die auf -> ucr set samba/share/<share>/usergroup/<user|@group>/invalid=true reagieren. Wird eine solche Variable gesetzt, sorgt "95univention-samba_local_config" für diesen Eintrag in der smb.conf: include = /etc/samba/shares.local.config.conf Das script "samba.local.config.py" legt diese Datei an und schreibt eine include Anweisung für jedes share, das ein "invalid=true" hat, in das File. include = /etc/samba/shares.local.config.d/<share>.local.config.conf Diese Files werden angelegt und darin die über ucr gesetzten und die im share schon definierten "invalid users" gesetzt [<share>] invalid users = ... Diese Config Files werden bei jeder Änderung der samba/share/<share>/usergroup/<user|@group>/invalid gelöscht und anhand der Einstellungen der Registry neu geschrieben. Das Paket muss "gepurgt" werden, um den Eintrag aus der smb.conf zu entfernen.
noch etwas, samba wird nicht neu gestartet
noch nicht fertig, es müssen noch global und share configs über ucr gesetzt werden können
über die variablen * samba/global/options/<option>=<value> * samba/shares/<share>/options/<option>=<value> können nun weitere Samba Optionen für die Sectionen [global] und [<share>] gesetzt werden share optionen (auch für invalid user) kommen nach * /etc/samba/local.config.d/<share>.local.config.conf und Optionen für die [global] Section nach * /etc/samba/local.config.d/global.local.config.conf eingebunden werden diese über /etc/samba/local.config.conf ein include Eintrag für dieses File wird in der /etc/samba/smb.conf durch 95univention-samba_local_config gesetzt, falls eine der ucr Variablen gesetzt wurde
Erstmal fixed Scope.
Moritz, bitte im Scope testen.
(In reply to comment #2) > Es gibt jetzt im scope reservation das paket "univention-samba-local-config", > dies enthält ein Template für smb.conf und ein script, die auf > > -> ucr set samba/share/<share>/usergroup/<user|@group>/invalid=true Ich habe das mit einem Benutzer getestet, der über einen Windows-Client auf die Freigabe foobar zugreift: Das Blocken eines einzelnen Benutzers, etwa mit ucr unset samba/share/foobar/usergroup/jmm/invalid=true funktioniert. Wenn mehr als ein Benutzer angegeben wird, werden beide in eine Zeile gemerget. Das Blockieren einer Gruppen mit ucr set samba/share/foobar/usergroup/@BadGuys/invalid=true funktioniert ebenfalls, nicht jedoch wenn ein Leerzeichen im Gruppennamen enthalten ist (z.B. Domain Users): ucr set samba/share/foobar/usergroup/@"Domain Users"/invalid=true In diesem Fall steht in /etc/samba/local.config.d/foobar.local.config.conf [foobar] invalid users = @Domain Users Es funktioniert aber nur mit @"Domain Users". Den zweiten Teil teste ich noch.
(In reply to comment #8) > (In reply to comment #2) > > Es gibt jetzt im scope reservation das paket "univention-samba-local-config", > > dies enthält ein Template für smb.conf und ein script, die auf > > > > -> ucr set samba/share/<share>/usergroup/<user|@group>/invalid=true > > Ich habe das mit einem Benutzer getestet, der über einen Windows-Client auf die > Freigabe foobar zugreift: > > Das Blocken eines einzelnen Benutzers, etwa mit > ucr unset samba/share/foobar/usergroup/jmm/invalid=true > funktioniert. Wenn mehr als ein Benutzer angegeben wird, werden beide in eine > Zeile gemerget. Das ist so für das Konzept auch garnicht sinnvoll. Hier sollen nur Gruppennamen angegeben werden, die dann vom Template automatisch mit "@"-Zeichen übernommen werden. Benutzernamen brauchen nicht berücksichtigt werden. Das Escapen von Leerzeichen in Gruppennamen muss ebenfalls funktionieren.
Das Setzen von globalen Optionen funktioniert (getestet mit testparm und der Option "wins hook", beim Setzen von Share-Optionen gibt es aber noch einen Bug: root@master:~# ucr set samba/shares/foobar/options/"wide links"=true Setting samba/shares/foobar/options/wide links Multifile: /etc/samba/smb.conf root@master:~# cat /etc/samba/local.config.d/foobar.local.config.conf [foobar] invalid users = @Domain Users
ok, das mit den Gruppen sollte jetzt funktionieren, das andere Problem war schneller gelöst, es muss ucr set samba/share/foobar/options/"wide links"=true (share ohne s) nicht ucr set samba/shares/foobar/options/"wide links"=true sein
Der Setzen der Gruppe mit Leerzeichen funktioniert nun: ucr set samba/share/foobar/usergroup/"Domain Users"/invalid=true verweigert dem Benutzer den Zugriff auf das Share foobar. ucr unset samba/share/foobar/usergroup/"Domain Users"/invalid hebt die Sperrung wieder auf. Das Setzen von Optionen funktioniert ebenfalls. Nach Eingabe des Befehls ucr set samba/share/foobar/options/"vfs objects"=recycle erscheint folgende Ausgabe in testparm: [foobar] path = /var/shares/foobar invalid users = strict locking = No include = /etc/samba/local.conf vfs objects = recycle