La page de manuel indique:
exécuter / rechercher uniquement si le fichier est un répertoire ou dispose déjà de l'autorisation d'exécution pour un utilisateur ( X
)
POSIX dit:
Le symbole permanent X doit représenter la partie exécution / recherche des bits en mode fichier si le fichier est un répertoire ou si les bits en mode fichier en cours (non modifiés) ont au moins un des bits d'exécution (S_IXUSR, S_IXGRP ou S_IXOTH). Il doit être ignoré si le fichier n'est pas un répertoire et qu'aucun des bits d'exécution n'est défini dans les bits du mode fichier actuel.
Il s'agit d'un indicateur d'autorisation conditionnelle: chmod
regarde tout ce qu'il traite actuellement, et s'il s'agit d'un répertoire, ou s'il a un bit d'exécution défini dans ses autorisations actuelles (propriétaire, groupe ou autre), il agit comme si l'autorisation demandée était x
, sinon il l'ignore. La condition est vérifiée au moment de l' chmod
application de l' X
instruction spécifique , vous pouvez donc effacer les bits d'exécution dans la même exécution avec a-x,a=rwX
pour définir uniquement le bit exécutable sur les répertoires.
Vous pouvez voir si un fichier a un bit d'exécution défini en regardant la partie «accès» de stat
la sortie de, ou la première colonne de ls -l
. Les bits d'exécution sont représentés par x
. -rwxr-xr-x
est commun aux exécutables et indique que le bit exécutable est défini pour le propriétaire, le groupe et les autres utilisateurs; -rw-r--r--
est commun aux autres fichiers et indique que le bit exécutable n'est pas défini (mais le bit de lecture est défini pour tout le monde et le bit d'écriture pour le propriétaire). Voir Comprendre les autorisations UNIX et leurs attributs qui contient beaucoup plus de détails.
Ainsi, dans votre exemple, u=rwX
définit les autorisations du propriétaire pour lire et écrire dans tous les cas, et pour les répertoires et les fichiers exécutables, exécutez; de même pour group ( g=rX
) et other ( o=rX
), lisez et exécutez pour les répertoires et les fichiers exécutables.
Le but de cet opérateur est de permettre à l'utilisateur de fournir chmod
une variété de fichiers et de répertoires et d'obtenir les autorisations d'exécution correctes (en supposant qu'aucun des fichiers ne contienne un ensemble de bits d'exécution invalide). Il évite d'avoir à faire la distinction entre les fichiers et les répertoires (comme dans les commandes traditionnelles find . -type f -exec chmod 644 {} +
et find . -type d -exec chmod 755 {} +
), et tente de traiter les exécutables de manière sensée.
(Notez que macOSchmod
ne prend apparemment en charge X
que les +
opérations.)
---, ---, ---
un indoe sans "bit set"?