| |
samba4:creazioneshares [2025/09/20 12:51] – created - external edit 127.0.0.1 | samba4:creazioneshares [2025/09/21 17:08] (current) – kurgan |
---|
===== Creare uno share ===== | ===== Creare uno share ===== |
| |
* Creare la directory sul disco e darle dei permessi minimi di default. Notare che nel comando chown uso il nome del dominio Samba (in questo caso "AD"): | * Creare la directory sul disco e darle dei permessi minimi di default. Notare che nel comando chown uso il nome del dominio Samba (in questo caso "AD"):<code> |
<code> | |
mkdir /srv/documenti | mkdir /srv/documenti |
chown root:"AD\Domain Admins" /srv/sdocumenti | chown root:"AD\Domain Admins" /srv/sdocumenti |
</code> | </code> |
| |
* 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. | * 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.<code> |
<code> | |
# share di esempio | # share di esempio |
[documenti] | [documenti] |
read only = no | read only = no |
</code> | </code> |
* Fare rileggere la config a Samba: | * Fare rileggere la config a Samba:<code> |
<code> | |
smbcontrol all reload-config | smbcontrol all reload-config |
</code> | </code> |
Nota: Se quando applichiamo le modifiche riceviamo questo errore assurdo qui: ''Il criterio di controllo corrente per il computer specificato non ha attivato il controllo. Se il criterio di protezione dei computer proviene dal dominio, chiedere a un amministratore di dominio di attivare l' Editor criteri di gruppo. In caso contrario, utilizzare l' Editor criteri del computer locale per configurare i criteri di controllo del computer localmente.'' allora ci manca un permesso nel path precedente a quello su cui stiamo lavorando, oppure stiamo cercando di togliere un permesso che è implicito nel file system (per esempio, lo user "root" che coincide con administrator, e che e` owner del file su Linux). In questo caso, proviamo a dare all'utente "administrator" il controllo completo su "la cartella selezionata". | Nota: Se quando applichiamo le modifiche riceviamo questo errore assurdo qui: ''Il criterio di controllo corrente per il computer specificato non ha attivato il controllo. Se il criterio di protezione dei computer proviene dal dominio, chiedere a un amministratore di dominio di attivare l' Editor criteri di gruppo. In caso contrario, utilizzare l' Editor criteri del computer locale per configurare i criteri di controllo del computer localmente.'' allora ci manca un permesso nel path precedente a quello su cui stiamo lavorando, oppure stiamo cercando di togliere un permesso che è implicito nel file system (per esempio, lo user "root" che coincide con administrator, e che e` owner del file su Linux). In questo caso, proviamo a dare all'utente "administrator" il controllo completo su "la cartella selezionata". |
| |
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. | 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. |
| |
| |
Scavando nei menù delle proprietà avanzate, e cliccando ulteriormente su "Mostra autorizzazioni avanzate" (tipico di Windows avere funzioni utili nascosti sotto diversi click su "Avanzate") troviamo i permessi speciali elencati in forma completa. Questi permessi comprendono alcune funzionalità utili per fare dei "magheggi" non ovvi. Uno dei possibili scenari in cui viene utile è se vogliamo creare diverse directory con diversi permessi sotto lo stesso share, e vogliamo che l'azione di spostare un file da una di queste directory all'altra faccia si che i permessi del file cambino rispecchiando i permessi di default della nuova directory e non quelli di origine del file stesso. | Scavando nei menù delle proprietà avanzate, e cliccando ulteriormente su "Mostra autorizzazioni avanzate" (tipico di Windows avere funzioni utili nascosti sotto diversi click su "Avanzate") troviamo i permessi speciali elencati in forma completa. Questi permessi comprendono alcune funzionalità utili per fare dei "magheggi" non ovvi. Uno dei possibili scenari in cui viene utile è se vogliamo creare diverse directory con diversi permessi sotto lo stesso share, e vogliamo che l'azione di spostare un file da una di queste directory all'altra faccia si che i permessi del file cambino rispecchiando i permessi di default della nuova directory e non quelli di origine del file stesso. |
| |
Una piccola spiegazione è necessaria: quando un file viene copiato, la nuova copia assume i permessi di default della directory dove viene creata, e questo è nel 99% dei casi esattamente quello che vogliamo che succeda. Quando un file viene spostato invece questo non succede, il file mantiene tutti i permessi originali. Se il file viene spostato a cavallo fra due directory che hanno permessi diversi (ovviamente occorre che l'operazione venga fatta da un utente che ha i permessi per farlo, ovvero permessi di modifica sia nella directory di partenza che in quella di destinazione) allora il file manterrà i permessi originali. Samba cerchrà di applicare i permessi della nuova directory al file (ovvero di applicare l'ereditarietà) ma nella configurazione classica degli share, nella quale gli utenti non amministratori non hanno "full control", non riuscirà a farlo perché l'utente che sta spostando il file non ha il permesso per modificarne i permessi. Il risultato è che il file viene spostato nella destinazione, ma mantiene tutti i permessi che aveva in origine, cosa che molto probabilmente NON vogliamo che succeda; noi vogliamo che il file assuma i permessi di default della directory di destinazine. | Una piccola spiegazione è necessaria: quando un file viene copiato, la nuova copia assume i permessi di default della directory dove viene creata, e questo è nel 99% dei casi esattamente quello che vogliamo che succeda. Quando un file viene spostato invece questo non succede, il file mantiene tutti i permessi originali. Se il file viene spostato a cavallo fra due directory che hanno permessi diversi (ovviamente occorre che l'operazione venga fatta da un utente che ha i permessi per farlo, ovvero permessi di modifica sia nella directory di partenza che in quella di destinazione) allora il file manterrà i permessi originali. Samba cercherà di applicare i permessi della nuova directory al file (ovvero di applicare l'ereditarietà) ma nella configurazione classica degli share, nella quale gli utenti non amministratori non hanno "full control", non riuscirà a farlo perché l'utente che sta spostando il file non ha il permesso per modificarne i permessi. Il risultato è che il file viene spostato nella destinazione, ma mantiene tutti i permessi che aveva in origine, cosa che molto probabilmente NON vogliamo che succeda; noi vogliamo che il file assuma i permessi di default della directory di destinazine. |
| |
Per ottenere questo risultato, abbiamo due possibilità: la prima è copiare e non spostare il file. La seconda è dare un permesso speciale agli utenti, quello di modificare i permessi dei files, ovvero "Cambia Autorizzazioni". È chiaro che questo permesso è potenzialmente una bomba in mano a un bambino, purtroppo. Gli utenti possono riuscire a fare ogni tipo di disastro se si mettono a modificare i permessi senza sapere cosa stanno facendo. | Per ottenere questo risultato, abbiamo due possibilità: la prima è copiare e non spostare il file. La seconda è dare un permesso speciale agli utenti, quello di modificare i permessi dei files, ovvero "Cambia Autorizzazioni". È chiaro che questo permesso è potenzialmente una bomba in mano a un bambino, purtroppo. Gli utenti possono riuscire a fare ogni tipo di disastro se si mettono a modificare i permessi senza sapere cosa stanno facendo. |
| |
{{attachment:permessi-speciali-2.jpg}} | {{:samba4:creazioneshares:permessi-speciali-2.jpg?600|}} |
| |
| |
Se vogliamo gestire le ACL da Linux, possiamo provare cosi` (e casomai poi da Windows vediamo cosa esce): | 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. | * 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.<code> |
<code> | |
mkdir /ud0/documenti | mkdir /ud0/documenti |
chown root /ud0/documenti | chown root /ud0/documenti |
</code> | </code> |
| |
* Poi diamo i permessi per mezzo delle ACL Posix, cosi` | * Poi diamo i permessi per mezzo delle ACL Posix, cosi`<code> |
| |
<code> | |
# configurazione di base con solo domain admins: | # configurazione di base con solo domain admins: |
| |
Qui mostro alcuni esempio di uso di detto comando per leggere le ACL su uno share e poi su una directory che ha permessi speciali (impostati da Windows). | Qui mostro alcuni esempio di uso di detto comando per leggere le ACL su uno share e poi su una directory che ha permessi speciali (impostati da Windows). |
| |
* Per autenticarmi devo usare un account di dominio, e devo farlo ogni volta. Per evitare di farlo ogni volta posso scrivere la password nella command line, oppure nell'environment, oppure posso usare Kerberos (se sono su una macchina joinata al dominio) così ho un ticket riutilizzabile enne volte. Ecco alcuni esempi: | * Per autenticarmi devo usare un account di dominio, e devo farlo ogni volta. Per evitare di farlo ogni volta posso scrivere la password nella command line, oppure nell'environment, oppure posso usare Kerberos (se sono su una macchina joinata al dominio) così ho un ticket riutilizzabile enne volte. Ecco alcuni esempi:<code> |
<code> | |
# chiede la password ogni volta: | # chiede la password ogni volta: |
smbcacls //fileserver/documenti / -U administrator | smbcacls //fileserver/documenti / -U administrator |
* Posso vedere i permessi dello share usando "/" come "path" oppure i permessi di un singolo file o directory dentro lo share indicandolo (sempre relativamente alla root dello share stesso) | * Posso vedere i permessi dello share usando "/" come "path" oppure i permessi di un singolo file o directory dentro lo share indicandolo (sempre relativamente alla root dello share stesso) |
* Posso impostare i permessi ma non ci sono messo per ora. | * Posso impostare i permessi ma non ci sono messo per ora. |
* Qui c'è un esempio di permessi dello share (la root dello share) che non comprendono permessi speciali. Li leggo visualizzandoli in due modi, cambia l'output ma il contenuto è il medesimo | * Qui c'è un esempio di permessi dello share (la root dello share) che non comprendono permessi speciali. Li leggo visualizzandoli in due modi, cambia l'output ma il contenuto è il medesimo<code> |
<code> | smbcacls //fileserver/documenti / --use-winbind-ccache |
root@fileserver:~# smbcacls //fileserver/documenti / --use-winbind-ccache | |
REVISION:1 | REVISION:1 |
CONTROL:SR|PD|SI|DI|DP | CONTROL:SR|PD|SI|DI|DP |
ACL:AD\Domain Admins:ALLOWED/OI|CI/FULL | ACL:AD\Domain Admins:ALLOWED/OI|CI/FULL |
| |
root@fileserver:~# smbcacls //fileserver/documenti / --use-winbind-ccache --sddl | smbcacls //fileserver/documenti / --use-winbind-ccache --sddl |
O:S-1-22-1-0G:S-1-5-21-2435491250-758963225-146791338-512D:PAI(A;;FA;;;S-1-22-1-0)(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;S-1-5-21-2435491250-758963225-146791338-513)(A;OICI;FA;;;S-1-5-21-2435491250-758963225-146791338-512) | O:S-1-22-1-0G:S-1-5-21-2435491250-758963225-146791338-512D:PAI(A;;FA;;;S-1-22-1-0)(A;OICIIO;FA;;;CO)(A;OICI;0x1200a9;;;S-1-5-21-2435491250-758963225-146791338-513)(A;OICI;FA;;;S-1-5-21-2435491250-758963225-146791338-512) |
</code> | </code> |
* Qui c'è un esempio di permessi di una directory sotto lo share che comprende permessi speciali, anche questa visualizzata in due modi. Noterete come purtroppo i permessi speciali siano indicati con un numero che immagino sia bitmapped,il che è sicuramente corretto ma decisamente poco utile per capire che permessi sono stati assegnati (**ACL:AD\g1:ALLOWED/OI|CI/0x001601ff**) | * Qui c'è un esempio di permessi di una directory sotto lo share che comprende permessi speciali, anche questa visualizzata in due modi. Noterete come purtroppo i permessi speciali siano indicati con un numero che immagino sia bitmapped,il che è sicuramente corretto ma decisamente poco utile per capire che permessi sono stati assegnati (''ACL:AD\g1:ALLOWED/OI|CI/0x001601ff'')<code> |
<code> | smbcacls //fileserver/documenti /share1 --use-winbind-ccache |
root@fileserver:~# smbcacls //fileserver/documenti /share1 --use-winbind-ccache | |
REVISION:1 | REVISION:1 |
CONTROL:SR|PD|SI|DI|DP | CONTROL:SR|PD|SI|DI|DP |
ACL:AD\g1:ALLOWED/OI|CI/0x001601ff | ACL:AD\g1:ALLOWED/OI|CI/0x001601ff |
| |
root@fileserver:~# smbcacls //fileserver/documenti /share1 --use-winbind-ccache --sddl | |
| smbcacls //fileserver/documenti /share1 --use-winbind-ccache --sddl |
O:S-1-5-21-2435491250-758963225-146791338-500G:S-1-5-21-2435491250-758963225-146791338-513D:PAI(A;OICI;FA;;;S-1-5-21-2435491250-758963225-146791338-512)(A;OICI;0x1601ff;;;S-1-5-21-2435491250-758963225-146791338-1108) | O:S-1-5-21-2435491250-758963225-146791338-500G:S-1-5-21-2435491250-758963225-146791338-513D:PAI(A;OICI;FA;;;S-1-5-21-2435491250-758963225-146791338-512)(A;OICI;0x1601ff;;;S-1-5-21-2435491250-758963225-146791338-1108) |
</code> | </code> |
| |