Differences between revisions 4 and 5
Revision 4 as of 2016-12-30 16:08:29
Size: 3947
Editor: Kurgan
Comment:
Revision 5 as of 2019-10-13 20:18:39
Size: 7038
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
== Creare e gestire uno share == = Creare e gestire uno share su domain controller o membro di un dominio AD =
Line 3: Line 3:
In samba, se usato come domain controller AD o membro di un dominio AD, gli share fanno totalmente affidamento sulle ACL posix, questo rende le cose piu` semplici (all'apparenza) rispetto a Samba 3, ma in realta` si aprono scenari da incubo nei quali ogni file ha permessi tutti suoi, e tutto si incasina fino al punto in cui non riesce piu` a capire una ciolla, esattamente come e` sempre stato quando troppa gente clicca allegramente sulle impostazioni di sicurezza dei files in uno share. In samba, se usato come domain controller AD, gli share fanno affidamento sulle ACL posix e su alcune ACL tipiche di Windows, non replicabili con le ACL posix, le quali vengono salvate da Samba negli attributi estesi (user_xattrs) dei files. Questi attributi sono gestiti dal modulo vfs_acl_xattr che viene caricato di default (e non e` disabilitabile) su un domain controller AD samba 4. Su un domain member, invece, è facoltativo.

Questo significa che un domain member potrà, volendo, usare una "vecchia" gestione dei permessi sugli shares, usando concetti tipici di samba 3 quali per esempio "force user" o "valid users" o "force directory mode", e NON USARE le funzioni estese del modulo vfs_acl_xattr. Su un domain member, se vogliamo usare le funzioni estese di vfs_acl_xattr, dovremo abilitarlo manualmente.

Su un domain controller, invece, e` impossibile non usare vfs_acl_xattr, e sebbene conosca almeno un setup nel quale il domain controller usa shares "alla samba 3" con abbondante uso di force user e valid users, questa sarebbeuna strada da non seguire mai.

Per riferimento:

 * man vfs_acl_xattr
 * https://wiki.samba.org/index.php/Setting_up_a_Share_Using_POSIX_ACLs
 * https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs

Vale la pena di notare che sebbene il Wiki di Samba dica che usare le ACL Posix "a mano" ovvero non dai tool di Windows ma direttamente con "setfacl" sia da evitarsi nel caso in cui si usi il modulo vfs_acl_xattr (ovvero per esempio su un domain controller), in realtà sembra che sia possibile farlo, accontentandosi di alcuni comportamenti di default (vedi il man di vfs_acl_xattr), sempre ovviamente se questi comportamenti ci stanno bene.
Line 6: Line 18:
=== Creare uno share === == Creare uno share ==
Line 8: Line 20:
 * Creare la entry per lo share in smb.conf. Notare la voluta semplicita` della entry. I permessi li diamo dal file system e non da qui.  * Creare la entry per lo share in smb.conf. Notare la voluta semplicita` della entry. Si suppone che sia caricato il modulo acl_xattr globalmente.
Line 10: Line 22:

[global]
# fra gli altri parametri, abilitato globalmente acl_xattr.
# (o perché specificato, o perché forzato dal fatto di essere un domain controller)
vfs objects = acl_xattr

# share di esempio
Line 13: Line 32:
        inherit acls = yes
        store dos attributes = yes
        # per una corretta gestione delle ACL da Windows
        map acl inherit = yes
}}}
 * Fare rileggere la config a Samba:
 {{{
smbcontrol all reload-config
Line 15: Line 42:
 * Creare la directory e dare i permessi minimi. Qui c'e` da discutere sulla soluzione migliore. C'e` chi sostiene che sia meglio fare tutto dall'interfaccia di windows, ma a me infastidisce. In ogni caso, un minimo va fatto, ergo per il momento questa e` la mia idea. Sicuramente si puo` fare meglio. Il concetto e` che dopo aver tolto accesso a "others" con il chmod 770, imposto il gruppo a "domain admins".
Line 17: Line 43:
== Gestire le ACL da Windows ==

Se vogliamo gestire le ACL da Windows (cosa che il wiki di Samba consiglia in ogni caso, e che permette la massima fedeltà rispetto al comportamento di un server Windows vero) a questo punto dobbiamo assicurarci che un utente o un gruppo abbia il diritto di manipolare i permessi dei files, mediante il privilegio apposito "SeDiskOperatorPrivilege".


=== Dare il privilegio di modificare le ACL ===

 * Verifichiamo quali utenti o gruppi possono modificare le ACL:
Line 18: Line 52:
mkdir documenti
chmod 770 documenti
chgrp "domain admins" documenti
net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMINIO\administrator"
}}}
 * Diamo al gruppo "Domain Admins" il diritto di modificare le ACL: (Possiamo dare il diritto al gruppo che vogliamo, ovviamente)
 {{{
net rpc rights grant "DOMINIO\Domain Admins" SeDiskOperatorPrivilege -U "DOMINIO\administrator"
Line 23: Line 59:
 * A questo punto posso gestire i permessi da Windows (che tristezza) aprendo "gestione computer", poi connettendomi ad un altro computer (il domain controller) e sotto a Utilita` di sistema / Cartelle Condivise / Condivisioni posso modificare i permessi (nel tab "sicurezza", e non in quello "condivisione").
  * Vi sono alcune entry "spurie" causate dai permessi "di base" (non posix), in quanto la directory appartiene a root.root di default. Queste entry possono essere tolte. Tipicamente sono un account sconosciuto con UID corto che finisce per zero (root) e "administrator" (un alias di root) che hanno solo "Autorizzazioni speciali" flaggato.
  * Assicuriamoci che "Domain admins" abbia tutto, compreso "full control", ed escluso "Autorizzazioni speciali"
  * Volendo credo che possiamo togliere ogni altra cosa a parte la entry per "Domain admins"
  * Aggiungiamo se serve "Domain users" senza "full control" ma con tutto il resto, o altro gruppo che deve usare lo share.
 
 * Dovremmo avere ottenuto una ACL Posix che suona piu` o meno cosi` (users = domain users, hanno lo stesso ID, cosi` come root = administrator):
 {{{
getfacl documenti
Vale la pena di notare che è opportuno NON DARE agli utenti normali il diritto in questione, altrimenti possiamo stare sicuri che riusciranno a fare un casino assurdo sui permessi. Ci riusciranno comunque, a dire il vero, anche senza questo diritto.
Line 33: Line 61:
# file: documenti
# owner: root
# group: DOMINIO\134domain\040admins
user::rwx
user:root:rwx
user:DOMINIO\134domain\040admins:rwx
group::rwx
group:users:rwx
group:DOMINIO\134domain\040admins:rwx
mask::rwx
other::---
default:user::rwx
default:user:root:rwx
default:user:DOMINIO\134domain\040admins:rwx
default:group::---
default:group:users:rwx
default:group:DOMINIO\134domain\040admins:rwx
default:mask::rwx
default:other::---

=== Dare i permessi minimi alla directory ===

Creiamo la directory come definita nello share, e diamo il permesso di base al gruppo che abbiamo definito prima come quello che puo` modificare le ACL, in questo caso e` "Domain Admins". La logica e` che il gruppo in questione deve avere "rwx" sulla directory.
{{{
mkdir /ud0/documenti
chown root /ud0/documenti
chgrp "Domain Admins" /ud0/documenti
chmod 0770 /ud0/documenti
Line 54: Line 72:
 * Se vogliamo tentare di evitare il passaggio per windows, possiamo tentare con questi comandi: === Gestire i permessi ===

Ora possiamo gestire i permessi usando un client Windows joinato al dominio, ovviamente loggandoci come un utente che e` parte del gruppo "Domain Admins".

 * Aprire "Gestione computer", scegliere "Azione", e poi "connetti ad un altro Computer", quindi inserire il nome del server Samba.
 * Sotto "Utilità di sistema" / "Cartelle condivise" / "Condivisioni" troveremo elencati i nostri share del server Samba.
 * Facendo doppio click sullo share, si apre una maschera.
 * Verificare sotto "Autorizzazioni Condivisione" che "Everyone" abbia tutto selezionato, ovvero "controllo completo", "modifica" e "lettura". Qui non ci serve altro.
 * Cliccare sul tab "Sicurezza", qui dobbiamo definire i diritti di accesso, per esempio dando al gruppo "Domain Users", o ad altro gruppo che userà lo share, tutti i permessi escluso "Full Control".
 * Assicuriamoci che "Domain admins" abbia tutto, compreso "full control", ed escluso "Autorizzazioni speciali"
 * Se non c'è già, aggiungiamo l'utente speciale "system" con tutto escluso sempre "Autorizzazioni speciali". (Vedi https://wiki.samba.org/index.php/The_SYSTEM_Account)

Le modifiche che apportiamo qui, compariranno sia nelle ACL del file system sotto linux (verificabili con un getfacl) sia dentro degli appositi attributi estesi, che conterranno quelle caratteristiche che non sono proprie delle ACL Posix. Questi attributi estesi possono essere letti da Linux con il comando "samba-tool ntacl get /path/che/ci/interessa --as-sddl". Stando al Wiki di Samba, l'output di questo comando sarebbe "comprensibile". A me non sembra che lo sia, ma forse sono ignorante in materia di gestione dei file system di Windows.



== Gestire le ACL da Linux ==

Se vogliamo gestire le ACL da Linux, possiamo provare cosi` (e casomai poi da Windows vediamo cosa esce):

 * Prima di tutto creiamo la directory come definita nello share, e diamo il permesso di base al gruppo "Domain Admins". La logica e` che il gruppo in questione deve avere "rwx" sulla directory.
 {{{
mkdir /ud0/documenti
chown root /ud0/documenti
chgrp "Domain Admins" /ud0/documenti
chmod 0770 /ud0/documenti
}}}

 * Poi diamo i permessi per mezzo delle ACL Posix, cosi`
Line 58: Line 105:
chmod 770 documenti
chgrp "domain admins" documenti
Line 62: Line 107:
setfacl -m "domain admins":rwx documenti
Line 63: Line 109:
setfacl -m "domain admins":rwx documenti
Line 69: Line 114:

# impediamo a tutti gli altri di fare qualsiasi cosa:
setfacl -m other:--- documenti
setfacl -m d:other:--- documenti
Line 71: Line 120:
 * Per finire, proviamo da Windows a creare files e directory sia come Administrator che come utente normale, e dovremmo in questo caso vedere che in ogni caso l'utente ha diritto di scrivere / leggere / cancellare files e directory create da Administrator (e` voluto).

Creare e gestire uno share su domain controller o membro di un dominio AD

In samba, se usato come domain controller AD, gli share fanno affidamento sulle ACL posix e su alcune ACL tipiche di Windows, non replicabili con le ACL posix, le quali vengono salvate da Samba negli attributi estesi (user_xattrs) dei files. Questi attributi sono gestiti dal modulo vfs_acl_xattr che viene caricato di default (e non e` disabilitabile) su un domain controller AD samba 4. Su un domain member, invece, è facoltativo.

Questo significa che un domain member potrà, volendo, usare una "vecchia" gestione dei permessi sugli shares, usando concetti tipici di samba 3 quali per esempio "force user" o "valid users" o "force directory mode", e NON USARE le funzioni estese del modulo vfs_acl_xattr. Su un domain member, se vogliamo usare le funzioni estese di vfs_acl_xattr, dovremo abilitarlo manualmente.

Su un domain controller, invece, e` impossibile non usare vfs_acl_xattr, e sebbene conosca almeno un setup nel quale il domain controller usa shares "alla samba 3" con abbondante uso di force user e valid users, questa sarebbeuna strada da non seguire mai.

Per riferimento:

Vale la pena di notare che sebbene il Wiki di Samba dica che usare le ACL Posix "a mano" ovvero non dai tool di Windows ma direttamente con "setfacl" sia da evitarsi nel caso in cui si usi il modulo vfs_acl_xattr (ovvero per esempio su un domain controller), in realtà sembra che sia possibile farlo, accontentandosi di alcuni comportamenti di default (vedi il man di vfs_acl_xattr), sempre ovviamente se questi comportamenti ci stanno bene.

Creare uno share

  • Creare la entry per lo share in smb.conf. Notare la voluta semplicita` della entry. Si suppone che sia caricato il modulo acl_xattr globalmente.
    [global]
    # fra gli altri parametri, abilitato globalmente acl_xattr.
    # (o perché specificato, o perché forzato dal fatto di essere un domain controller)
    vfs objects = acl_xattr
    
    # share di esempio
    [documenti]
            path = /ud0/documenti
            read only = no
            inherit acls = yes
            store dos attributes = yes
            # per una corretta gestione delle ACL da Windows
            map acl inherit = yes
  • Fare rileggere la config a Samba:
    smbcontrol all reload-config

Gestire le ACL da Windows

Se vogliamo gestire le ACL da Windows (cosa che il wiki di Samba consiglia in ogni caso, e che permette la massima fedeltà rispetto al comportamento di un server Windows vero) a questo punto dobbiamo assicurarci che un utente o un gruppo abbia il diritto di manipolare i permessi dei files, mediante il privilegio apposito "SeDiskOperatorPrivilege".

Dare il privilegio di modificare le ACL

  • Verifichiamo quali utenti o gruppi possono modificare le ACL:
    net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMINIO\administrator"
  • Diamo al gruppo "Domain Admins" il diritto di modificare le ACL: (Possiamo dare il diritto al gruppo che vogliamo, ovviamente)
    net rpc rights grant "DOMINIO\Domain Admins" SeDiskOperatorPrivilege -U "DOMINIO\administrator"

Vale la pena di notare che è opportuno NON DARE agli utenti normali il diritto in questione, altrimenti possiamo stare sicuri che riusciranno a fare un casino assurdo sui permessi. Ci riusciranno comunque, a dire il vero, anche senza questo diritto.

Dare i permessi minimi alla directory

Creiamo la directory come definita nello share, e diamo il permesso di base al gruppo che abbiamo definito prima come quello che puo` modificare le ACL, in questo caso e` "Domain Admins". La logica e` che il gruppo in questione deve avere "rwx" sulla directory.

mkdir /ud0/documenti
chown root /ud0/documenti
chgrp "Domain Admins" /ud0/documenti
chmod 0770 /ud0/documenti

Gestire i permessi

Ora possiamo gestire i permessi usando un client Windows joinato al dominio, ovviamente loggandoci come un utente che e` parte del gruppo "Domain Admins".

  • Aprire "Gestione computer", scegliere "Azione", e poi "connetti ad un altro Computer", quindi inserire il nome del server Samba.
  • Sotto "Utilità di sistema" / "Cartelle condivise" / "Condivisioni" troveremo elencati i nostri share del server Samba.
  • Facendo doppio click sullo share, si apre una maschera.
  • Verificare sotto "Autorizzazioni Condivisione" che "Everyone" abbia tutto selezionato, ovvero "controllo completo", "modifica" e "lettura". Qui non ci serve altro.
  • Cliccare sul tab "Sicurezza", qui dobbiamo definire i diritti di accesso, per esempio dando al gruppo "Domain Users", o ad altro gruppo che userà lo share, tutti i permessi escluso "Full Control".
  • Assicuriamoci che "Domain admins" abbia tutto, compreso "full control", ed escluso "Autorizzazioni speciali"
  • Se non c'è già, aggiungiamo l'utente speciale "system" con tutto escluso sempre "Autorizzazioni speciali". (Vedi https://wiki.samba.org/index.php/The_SYSTEM_Account)

Le modifiche che apportiamo qui, compariranno sia nelle ACL del file system sotto linux (verificabili con un getfacl) sia dentro degli appositi attributi estesi, che conterranno quelle caratteristiche che non sono proprie delle ACL Posix. Questi attributi estesi possono essere letti da Linux con il comando "samba-tool ntacl get /path/che/ci/interessa --as-sddl". Stando al Wiki di Samba, l'output di questo comando sarebbe "comprensibile". A me non sembra che lo sia, ma forse sono ignorante in materia di gestione dei file system di Windows.

Gestire le ACL da Linux

Se vogliamo gestire le ACL da Linux, possiamo provare cosi` (e casomai poi da Windows vediamo cosa esce):

  • Prima di tutto creiamo la directory come definita nello share, e diamo il permesso di base al gruppo "Domain Admins". La logica e` che il gruppo in questione deve avere "rwx" sulla directory.
    mkdir /ud0/documenti
    chown root /ud0/documenti
    chgrp "Domain Admins" /ud0/documenti
    chmod 0770 /ud0/documenti
  • Poi diamo i permessi per mezzo delle ACL Posix, cosi`
    # configurazione di base con solo domain admins:
    
    setfacl -m   g:"domain admins":rwx documenti
    setfacl -m d:g:"domain admins":rwx documenti
    setfacl -m     "domain admins":rwx documenti
    setfacl -m   d:"domain admins":rwx documenti
    
    # aggiunta dei permssi per domain users:
    
    setfacl -m    g:"domain users":rwx documenti
    setfacl -m  d:g:"domain users":rwx documenti
    
    # impediamo a tutti gli altri di fare qualsiasi cosa:
    setfacl -m    other:--- documenti
    setfacl -m  d:other:--- documenti

Shares speciali

Per il momento, in attesa di fare prove personalmente, mi e vi rimando al sito di Samba.org:

Samba4/CreazioneShares (last edited 2020-06-26 15:32:59 by Kurgan)