linux kernel modulo di sicurezza smack esempio di trasmutazione

2

Nella documentazione del kernel per modulo di sicurezza smack si legge: "Se una directory è marcata come transmuting (SMACK64TRANSMUTE = TRUE) e la regola di accesso che consente a un processo di creare un oggetto in tale directory include l'accesso 't' l'etichetta assegnata al nuovo oggetto sarà quella della directory, non il processo di creazione. più facile per due processi con diverse etichette per condividere i dati senza concedere l'accesso a tutti i loro file ".

Qualcuno può dare un esempio su come impostare le regole e le autorizzazioni per la directory e i file o altre risorse condivise?

Sto leggendo sul tizen three security model e l'argomento che è difficile da capire riguarda la directory /run . In particolare sull'etichetta System::Run : "Il dominio utente ha accesso completo e in trasformazione a questa etichetta". Sul mio sistema desktop la directory /run contiene solo oggetti di proprietà di root. In che modo un processo utente ha accesso in scrittura? O l'accesso completo non significa avere il permesso di scrittura?

    
posta minghua 06.11.2016 - 03:49
fonte

1 risposta

3

La funzionalità di trasmissione di Smack risolve un problema di due applicazioni in esecuzione con regole Smack diverse che condividono i dati in una singola directory. Prima di tutto, entrambe le applicazioni devono scrivere ('w') ed eseguire ('x') l'accesso all'etichetta della directory per poter scrivere in essa. Ma i file che verrebbero creati avranno l'etichetta Smack del processo che li ha creati. Se una delle due app desidera accedere a file in quella directory che sono stati creati dall'altra app, è necessario accedere all'etichetta dell'altra app.

Per risolvere ciò, Smack fornisce la funzione di transmutazione. Sono necessarie due parti:

  • Le applicazioni che scrivono nella directory devono avere accesso 't' all'etichetta della directory.
  • La directory deve avere attributo transmute. Se si tratta di una directory ordinaria, si imposta l'attributo con security.SMACK64TRANSMUTE xattr impostato su "TRUE" o più semplice con il comando "chsmack -t". Se la directory è un punto di mount (come / run nell'esempio Tizen), può essere montata con smackfstransmute="some_label" opzione di mount per dargli l'etichetta Smack desiderata e abilitare transmute.

Questo abiliterà transmute, influenzando le etichette Smack dei nuovi file creati in quella directory. Ogni file creato da una delle app ora otterrà l'etichetta Smack della directory anziché l'etichetta Smack del processo che lo ha creato. E ogni sottodirectory creata in quella directory riceverà anche l'attributo transmute.

Fammi mostrare un esempio:

# mkdir /tmp/test
# chsmack -a dir_label /tmp/test
# chsmack /tmp/test
/tmp/test access="dir_label"
# echo "process_label dir_label wx" | smackload
# echo process_label >/proc/self/attr/current

Con directory / tmp / test con etichetta "dir_label" e shell corrente in esecuzione con label "process_label", vediamo come verranno etichettati i nuovi file e le directory:

# touch /tmp/test/file1
# mkdir /tmp/test/dir1
# chsmack /tmp/test/file1 /tmp/test/dir1
/tmp/test/file1 access="process_label"
/tmp/test/dir1 access="process_label"

Abilitiamo transmute:

# chsmack -t /tmp/test
# chsmack /tmp/test
/tmp/test/ access="dir_label" transmute="TRUE"
# echo "process_label dir_label wxt" | smackload

E trasmutare in azione:

# touch /tmp/test/file2
# mkdir /tmp/test/dir2
# chsmack  /tmp/test/file2 /tmp/test/dir2
/tmp/test/file2 access="dir_label"
/tmp/test/dir2 access="dir_label" transmute="TRUE"
    
risposta data 15.01.2017 - 17:22
fonte

Leggi altre domande sui tag