chmod/chown ne suffisent pas toujours. Les ACL permettent des permissions multi-utilisateurs. Les capabilities donnent des privilèges partiels sans root. SELinux ajoute une couche de sécurité par contextes.
ACL (Access Control Lists)
Installation
apt install acl
Définir des ACL
# Donner lecture à user2 sur un fichier
setfacl -m u:user2:r file.txt
# Donner lecture/écriture à un groupe
setfacl -m g:developers:rw project/
# ACL par défaut (héritage)
setfacl -d -m u:user2:rx /data/
Lire les ACL
getfacl file.txt
Supprimer ACL
setfacl -x u:user2 file.txt # Retirer user2
setfacl -b file.txt # Tout supprimer
Capabilities
Principe
Donner des privilèges spécifiques sans root complet.
Lister capabilities
getcap /usr/bin/ping
# /usr/bin/ping = cap_net_raw+ep
Ajouter une capability
# Permettre à nginx de bind port 80 sans root
setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx
Supprimer
setcap -r /usr/sbin/nginx
Capabilities courantes
CAP_NET_BIND_SERVICE: bind ports < 1024CAP_NET_RAW: raw sockets (ping)CAP_SYS_ADMIN: administration systèmeCAP_DAC_OVERRIDE: bypass permissions fichiers
SELinux Basics
Vérifier l'état
getenforce # Enforcing / Permissive / Disabled
sestatus
Contextes SELinux
ls -Z /var/www/html/
# -rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html
Changer le contexte
chcon -t httpd_sys_content_t /var/www/html/file.html
# Restaurer contexte par défaut
restorecon -v /var/www/html/file.html
Mode permissif temporaire
setenforce 0 # Permissive
setenforce 1 # Enforcing
Conclusion
ACL permettent des permissions granulaires multi-utilisateurs. Capabilities évitent root pour des privilèges limités. SELinux ajoute une couche MAC (Mandatory Access Control) essentielle en production.


