Questa operazione richiede di appartenere al ruolo
# semodule -B
La seguente operazione richiede che l'utente possa accedere al ruolo di
destinazione. Questo esempio descrive come elevarsi al ruolo
# newrole -r sysadm_r
Esiste una corrispondenza tra gli utenti di linux e le identità di SELinux. Le
politiche utilizzano gli utenti generici di SELinux per configurazioni rilevanti
sui ruoli; per esempio, per mettere in corrispondenza l'utente
# semanage login -a -s staff_u pebenito
Questa politica non ha bisogno di venire ricaricata: se l'utente è connesso, è necessario che ripeta il processo di autenticazione affinchè la nuova politica abbia effetto.
Questa operazione richiede di appartenere al ruolo
# rlpkg -a
Oltre alla possibilità di rietichettare l'intero filesystem, è possibile
limitare il comando solamente ad un pacchetto di portage. Questa operazione
richiede di appartenere al ruolo
# rlpkg shadow sash
Viene utilizzato lo script rlpkg, che può ricevere come parametro un numero arbitrario di pacchetti.
SELinux fornisce diversi meccanismi di protezione per la memoria. Una funzione
supportata permette la riallocazione dei testi ELF: una libreria di questo tipo
ha una etichetta speciale, ed lo strumento
# rlpkg -t
Questa operazione verrà ripetuta automaticamente ad ogni nuova etichettatura.
Controllare i demoni che vengono avviati tramite script di inizializzazione
nella cartella /etc/init.d è leggermente differente in SELinux. Per assicurarsi
che vengano avviati nel dominio corretto, occorre sempre utilizzare il comando
# run_init /etc/init.d/ntpd start # run_init /etc/init.d/apache2 restart # run_init /etc/init.d/named stop
Il comando
# /etc/init.d/sshd restart Authenticating root. Password: * Stopping sshd... [ ok ] * Starting sshd... [ ok ]
Il passaggio tra i due modi in SELinux è molto semplice: occorre solamente scrivere 1 per impostare il modo rinforzato (oppure 0 per quello permissivo) all'interno del file /selinux/enforce. Il modo in uso può venire individuato leggendo il file sopracitato: 0 identifica il modo permissivo, 1 quello rinforzato. Se l'opzione del kernel "NSA SELinux Development Support" non è stata impostata, il sistema si troverà sempre nel modo rinforzato, e non sarà possibile spostarsi nel modo permissivo.
Individuare il modo corrente # cat /selinux/enforcePassare al modo rinforzato # echo 1 > /selinux/enforcePassare al modo permissivo # echo 0 > /selinux/enforce
Una macchina con l'opzione per il supporto allo sviluppo abilitato, può venire
avviata nel modo rinforzato solamente aggiungendo
In aggiunta alle opzioni del kernel descritte precedentemente, il modo può
venire impostato all'avvio del sistema modificando il file
# SELINUX can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive
Le impostazioni di questo file saranno sovrascritte dalle opzioni a linea di comando del kernel descritte precedentemente.
Per ottenere informazioni dettagliate di SELinux riguardo allo stato del sistema
si può fare riferimento all'utility
SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Policy version: 18
Nella prima sezione vengono fornite informazioni riguardanti lo stato
principale: la prima linea mostra se il kernel SELinux è presente ed è
abilitato. Se risulta disabilitato, o il kernel non è stato compilato con il
supporto ad SELinux, oppure la politica non è stata caricata. La seconda voce
mostra il mount point per il filesystem di SELinux. Durante un normale utilizzo,
il filesystem dovrebbe essere montato nella cartella di default
Policy booleans: secure_mode inactive ssh_sysadm_login inactive user_ping inactive
La seconda sezione mostra lo stato delle variabili booleane delle politiche condizionali. Nella colonna di sinistra vengono mostrati i nomi delle variabili, mentre in quella di destra il loro stato (attivo o inattivo). Questa sezione non viene mostrata nei kernel con politiche di versione antecedenti alla 15, in quanto non supportano le politiche condizionali.
Process contexts: Current context: pebenito:sysadm_r:sysadm_t Init context: system_u:system_r:init_t /sbin/agetty system_u:system_r:getty_t /usr/sbin/sshd system_u:system_r:sshd_t
La terza sezione riguarda i contesti dei processi correnti, e le loro numerose chiavi. Se un processo non sta venendo eseguito nel contesto corretto, semplicemente non funzionerà correttamente.
File contexts: Controlling term: pebenito:object_r:sysadm_devpts_t /sbin/init system_u:object_r:init_exec_t /sbin/agetty system_u:object_r:getty_exec_t /bin/login system_u:object_r:login_exec_t /sbin/rc system_u:object_r:initrc_exec_t /sbin/runscript.sh system_u:object_r:initrc_exec_t /usr/sbin/sshd system_u:object_r:sshd_exec_t /sbin/unix_chkpwd system_u:object_r:chkpwd_exec_t /etc/passwd system_u:object_r:etc_t /etc/shadow system_u:object_r:shadow_t /bin/sh system_u:object_r:bin_t -> system_u:object_r:shell_exec_t /bin/bash system_u:object_r:shell_exec_t /bin/sash system_u:object_r:shell_exec_t /usr/bin/newrole system_u:object_r:newrole_exec_t /lib/libc.so.6 system_u:object_r:lib_t -> system_u:object_r:shlib_t /lib/ld-linux.so.2 system_u:object_r:lib_t -> system_u:object_r:shlib_t
La quarta sezione mostra i contesti dei file controllati dai processi correnti, e le loro numerose chiavi. Per quanto riguarda i collegamenti simbolici, viene mostrato sia il contesto del collegamento che quello dell'oggetto riferito. Se ad un file è stato assegnato un contesto non corretto, può risultare inaccessibile o ottenere permessi non corretti per colpa di un particolare processo.