Comprendre chmod : droits 755, 644 et sticky bit
Dans les systèmes de type Unix, chmod modifie les droits d’accès aux fichiers et aux répertoires. La lecture, l’écriture et l’exécution se règlent séparément pour le propriétaire, le groupe et les autres utilisateurs. Les droits d’un répertoire ont un sens particulier : ils déterminent la liste des noms, la création ou suppression d’entrées et l’accès à un chemin connu.
Modes numériques et symboliques
La commande symbolique chmod u+x script.sh donne au propriétaire le droit d’exécuter le fichier. Dans un mode numérique, lecture vaut 4, écriture 2 et exécution 1. Ainsi, 755 représente rwxr-xr-x : le propriétaire peut lire, modifier et exécuter ; le groupe et les autres peuvent lire et exécuter. Le mode 644 convient souvent à un fichier ordinaire public, mais tout dépend de l’application. Un nombre familier n’est pas une règle de sécurité universelle.
Pourquoi les droits du répertoire comptent
Sur un répertoire, la lecture permet d’énumérer les noms, l’écriture de changer les entrées et l’exécution de traverser un chemin connu. La suppression d’un fichier dépend normalement des droits sur son répertoire parent, pas de l’autorisation d’écrire dans le fichier. Un fichier en 444 peut donc encore être supprimé par une personne autorisée à modifier le répertoire. Le manuel GNU Coreutils précise cette distinction. Si l’accès échoue alors que le fichier semble lisible, examinez chaque répertoire parent et l’identité sous laquelle tourne le service.
Exemple pour un hébergement web
Imaginons un répertoire de fichiers HTML que le serveur web doit lire, alors que seul leur propriétaire peut les mettre à jour. On peut commencer par 755 pour les répertoires et 644 pour les fichiers ordinaires. Il faut toutefois tenir compte du compte du service, des groupes et des règles de l’hébergement ; des fichiers de configuration privés peuvent exiger des droits plus stricts. Régler tout sur 777 pour faire disparaître une erreur donne de larges droits de modification aux utilisateurs locaux. Vérifiez d’abord le propriétaire et les droits avec stat et ls -l.
Setuid, setgid et sticky bit
Un quatrième chiffre octal initial précise les bits particuliers : 4 pour setuid, 2 pour setgid et 1 pour sticky. Ainsi, 4755 active setuid sur un exécutable ; 455 ne le fait pas. Setuid demande de la prudence, car une faille du programme peut être exploitée avec les privilèges du propriétaire. Dans un répertoire, setgid peut faire hériter les nouvelles entrées du groupe du répertoire. Le sticky bit d’un répertoire partagé comme /tmp restreint la suppression ou le renommage des fichiers d’autrui. Avant chmod -R, examinez l’arborescence : fichiers ordinaires, exécutables et répertoires n’ont généralement pas besoin des mêmes modes.
