Bug 12024 - Lokale Share-Konfiguration per UCR
Lokale Share-Konfiguration per UCR
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Samba
UCS 2.1
All Linux
: P4 enhancement (vote)
: UMC Reservierung MS1
Assigned To: Felix Botner
Moritz Muehlenhoff
:
Depends on:
Blocks: 12041 12045 12052 13580 46975
  Show dependency treegraph
 
Reported: 2008-08-25 09:02 CEST by Ingo Steuwer
Modified: 2023-03-25 06:46 CET (History)
1 user (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ingo Steuwer univentionstaff 2008-08-25 09:02:58 CEST
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.
Comment 1 Ingo Steuwer univentionstaff 2008-08-25 09:04:00 CEST
Felix, bitte das Paket "univention-samba" im Reservierungssystem-Scope um ein entsprechendes Binärpaket erweitern.
Comment 2 Felix Botner univentionstaff 2008-08-26 13:38:34 CEST
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.
Comment 3 Felix Botner univentionstaff 2008-08-26 13:48:25 CEST
noch etwas, samba wird nicht neu gestartet
Comment 4 Felix Botner univentionstaff 2008-08-26 16:39:19 CEST
noch nicht fertig, es müssen noch global und share configs über ucr gesetzt werden können
Comment 5 Felix Botner univentionstaff 2008-08-27 10:54:31 CEST
ü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
Comment 6 Ingo Steuwer univentionstaff 2008-08-27 13:14:17 CEST
Erstmal fixed Scope.
Comment 7 Ingo Steuwer univentionstaff 2008-08-27 13:14:38 CEST
Moritz, bitte im Scope testen.
Comment 8 Moritz Muehlenhoff univentionstaff 2008-08-27 14:20:07 CEST
(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.
Comment 9 Ingo Steuwer univentionstaff 2008-08-27 14:25:03 CEST
(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.
Comment 10 Moritz Muehlenhoff univentionstaff 2008-08-27 14:29:28 CEST
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
Comment 11 Felix Botner univentionstaff 2008-08-28 09:56:13 CEST
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
 


Comment 12 Moritz Muehlenhoff univentionstaff 2008-08-28 10:47:14 CEST
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