J'ai besoin d'une clarification / confirmation / élaboration sur les différents rôles que DAC, ACL et MAC jouent dans la sécurité des fichiers Linux.
Après quelques recherches dans la documentation, voici ma compréhension de la pile:
- SELinux doit vous permettre d'accéder à l'objet fichier.
- Si les ACLs du fichier (par exemple
setfacl
,getfacl
pour un montage ACL) permet explicitement / refuse l' accès à l'objet, aucune autre traitement est nécessaire. - Sinon, cela dépend des autorisations du fichier (modèle DAC rwxrwxrwx).
Suis-je en train de manquer quelque chose? Y a-t-il des situations où ce n'est pas le cas?
linux
permissions
selinux
acl
Belmin Fernandez
la source
la source
Réponses:
Lorsqu'un processus effectue une opération sur un fichier, le noyau Linux effectue la vérification dans l'ordre suivant:
Contrôle d'accès discrétionnaire (DAC) ou contrôle d'accès dicté par l'utilisateur. Cela inclut à la fois les vérifications des autorisations de style UNIX classiques et les listes de contrôle d'accès POSIX (ACL) . Les vérifications UNIX classiques comparent l'UID et le GID du processus actuel à l'UID et au GID du fichier auquel vous accédez en fonction des modes définis (lecture / écriture / eXecute). La liste de contrôle d'accès étend les vérifications UNIX classiques pour permettre plus d'options concernant le contrôle des autorisations.
Contrôle d'accès obligatoire (MAC) ou contrôle d'accès basé sur des règles. Ceci est implémenté en utilisant des modules de sécurité Linux (LSM) qui ne sont plus de vrais modules (ils l'étaient auparavant mais ils ont été abandonnés). Ils permettent des vérifications supplémentaires basées sur d'autres modèles que les vérifications de sécurité classiques de style UNIX. Tous ces modèles sont basés sur une politique décrivant quel type d'opérations est autorisé pour quel processus dans quel contexte.
Voici un exemple d'accès aux inodes (qui inclut l'accès aux fichiers) pour étayer ma réponse avec des liens vers une référence croisée Linux en ligne . Les "
function_name
(nom de fichier: ligne)" donnés sont pour la version 3.14 du noyau Linux.La fonction
inode_permission
( fs / namei.c: 449 ) vérifie d'abord l'autorisation de lecture sur le système de fichiers lui-même (sb_permission
dans fs / namei.c: 425 ), puis appelle__inode_permission
( fs / namei.c: 394 ) pour vérifier la lecture / écriture / exécution autorisations et POSIX ACL sur un inode dansdo_inode_permission
( fs / namei.c: 368 ) (DAC), puis autorisations liées à LSM (MAC) danssecurity_inode_permission
( security / security.c: 550 ).Il n'y avait qu'une seule exception à cette commande (DAC puis MAC): c'était pour les contrôles mmap. Mais cela a été corrigé dans la version 3.15 du noyau Linux ( commit pertinent ).
la source
DAC
==Discretionary Access Control
, http://en.wikipedia.org/wiki/Discretionary_access_controlMAC
==Mandatory Access Control
, http://en.wikipedia.org/wiki/Mandatory_access_controlACL
==Access Control List
, http://en.wikipedia.org/wiki/Access_control_listLe
ACL
spécifie les contrôles à appliquer par la méthode de contrôle,DAC
ouMAC
.MAC
est explicite, contrôlé de manière centralisée et n'autorise pas les utilisateurs à accorder des droits sur un objet à moins qu'ils ne disposent d'autorisations explicites pour le faire, alors qu'ilDAC
permet aux autres utilisateurs d'accéder aux objets auxquels ils peuvent accéder.MAC
ACL
s sera toujours appliqué à une demande en premier, et si l'accès est refusé, le traitement s'arrête. Si l'accès est autorisé, lesDAC
ACL
s sont appliqués, et à nouveau si l'accès est refusé, le traitement s'arrête. Ce n'est que si l'accès est accordé par les deuxMAC
etDAC
ACL
s que l'utilisateur peut accéder à l'objet qu'il a demandé.SELinux
est uneMAC
implémentation pour Linux (il y en a d'autres), tandis que lesrwx
autorisations de fichiers traditionnelles , combinées avec l'utilisateur et le groupe propriétaire forment l'intégralitéDAC
ACL
. LaSELinux
«politique» est essentiellement laMAC
ACL
.la source
setfacl
) entrent-ils?setacl
étend les systèmes de fichiers de baseACL
pour permettre à plusieurs utilisateurs ou groupes d'être affectés àACL
des fichiers et des répertoires. Il s'agit également d'uneDAC
mise en œuvre et elle est donc appliquée après l'application du parSELinux
MAC
ACL
.setfacl
ACL définies explicitement remplacent les autorisations traditionnelles. Est-ce vrai dans tous les cas?setacl
/setfacl
ACL
s remplacera le traditionnel «simple»ACL
du fichier.setfacl
appartient à la réponse.Désolé de chicaner, mais je pense que certaines des réponses ici peuvent être incorrectes. Directement depuis http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html : Fedora :
la source