PDA

View Full Version : mount/fstab: opzione fscontext


Gica78R
27-08-2008, 22:53
Ciao a tutti!

Ho un piccolo problemino nel montaggio di una partizione vfat, in particolare con l'opzione fscontext. Il sistema è Fedora 8, con kernel 2.6.25.14-69.fc8. La partizione in questione deve essere condivisa mediante Samba, ma SELinux non lo permette; leggendo i vari forum, compreso quello del fedora project, si capisce che per permettere la condivisione di partizioni vfat mediante Samba con SELinux abilitato è necessario passare l'opzione

fscontext=system_u:object_r:samba_share_t

al comando mount (oppure aggiungerla alle opzioni nell'fstab). A quanto pare, però, questa opzione non viene accettata e, in seguito al fallimento del mount, dmesg segnala il seguente errore:

SELinux: security_context_to_sid(system_u:object_r:smbd_t) failed for (dev sda7, type vfat) errno=-22

Per fugare i dubbi, ho provato a montare manualmente una memoria usb col comando

mount -t vfat -o fscontext=system_u:object_r:removable_t <device> <mount_point>

ed ho ricevuto un errore analogo. Lo stesso comando di mount con le stesse opzioni per montare la stessa memoria su Ubuntu 8.04 va invece a buon fine senza segnalare errori.

Secondo voi dove sta il problema? Nel comando mount di Fedora, nel kernel o proprio in SELinux? :confused:


Grazie :)

Gimli[2BV!2B]
27-08-2008, 23:19
Credo che non bastino opzioni al mount, ma che sia necessario creare una piccola policy che permetta di fare ciò che desideri.

In fondo a questa discussione (http://www.nabble.com/SELinux-prevents-Samba-from-sharing-NTFS-mounts.-td14310313.html) ho trovato questo:grep fusefs_t /var/log/audit/audit.log | audit2allow -M mysamba semodule -i mysamba.pp
In pratica dovrebbe creare una policy basandosi sui tentativi di scavalcamento registrati dal log di audit.

Mi sembra la strada giusta, solo che va adattata alla tua situazione: tu non hai ntfs via fuse (ntfs-3g), ma vfat.

In primo luogo (stando al suggerimento della discussione) dovrai capire come filtrare gli errori che ti servono (grep adattato al tuo caso), quindi creare la policy.

Questa breve guida mi sembra ben fatta (http://blog.dgrossato.com/2007/09/selinux-personalizzare-una-policy.html), e si basa, appunto, sul log di audit.

Riguardo alla questione Ubuntu, se non hai configurato tu il SELinux, da quel che mi risulta, non è attivato di default, quindi niente errori.

Gica78R
28-08-2008, 07:59
;23843286']Credo che non bastino opzioni al mount, ma che sia necessario creare una piccola policy che permetta di fare ciò che desideri.

In fondo a questa discussione (http://www.nabble.com/SELinux-prevents-Samba-from-sharing-NTFS-mounts.-td14310313.html) ho trovato questo:grep fusefs_t /var/log/audit/audit.log | audit2allow -M mysamba semodule -i mysamba.pp
In pratica dovrebbe creare una policy basandosi sui tentativi di scavalcamento registrati dal log di audit.

Mi sembra la strada giusta, solo che va adattata alla tua situazione: tu non hai ntfs via fuse (ntfs-3g), ma vfat.

In primo luogo (stando al suggerimento della discussione) dovrai capire come filtrare gli errori che ti servono (grep adattato al tuo caso), quindi creare la policy.

Grazie mille! Stasera ci provo :)

Riguardo alla questione Ubuntu, se non hai configurato tu il SELinux, da quel che mi risulta, non è attivato di default, quindi niente errori.

Ho fatto quelle prove perché pensavo fosse più un problema di mount che di SELinux. Evidentemente non è così.


Ciao

Gica78R
30-08-2008, 00:19
Ho risolto usando i comandi audit2allow e semodule in questo modo (sono due comandi separati da dare in sequenza):

grep dosfs_t /var/log/audit/audit.log | audit2allow -M mysamba
semodule -i mysamba.pp

In pratica, se ho ben capito, ora ho un nuovo modulo (o policy :confused: ) che permette l'accesso ai file etichettati con dosfs_t da parte di smbd. Non credo sia la soluzione migliore, in quanto i file dello share vfat non vengono etichettati come samba_share_t, ma mi accontento.

In precedenza, prima di risolvere come detto, nell'impossibilità di montare la partizione vfat con l'opzione fscontext riportata nel primo post, avevo provato una rietichettatura manuale con
chcon -R -t samba_share_t /condivisione

La cosa funzionava parzialmente: avevo accesso allo share via samba, ma l'etichettatura non era persistente (al riavvio tornava ad essere dosfs_t) e, soprattutto, se provavo a creare un nuovo file o directory all'interno dello share questo assumeva l'etichetta dosfs_t invece di samba_share_t; in questo modo il file poteva essere solo creato ma non acceduto, né cancellato, né rinominato via samba.
Ho provato anche a imporre la rietichettatura usando il tool di gestione di SELinux incluso in Fedora, ma non avevo alcun effetto.

Sinceramente non so se tenermi questa soluzione un po' bacarospa ma funzionante oppure disabilitare SELinux (tanto il server è locale e solo per fare esperimenti) oppure cambiare distribuzione e tornare alle origini (Debian :cool: ) :stordita:

Ciao :)