Je veux juste savoir comment trouver, dans un dossier, les fichiers qui n'ont aucune autorisation d'utilisateur de groupe (pas de lecture/écriture/exécution) du tout, en utilisant le terminal.
Vous pouvez utiliser:
find . \! -perm /070
Ou:
find . \! -perm /g+rwx
Cela fonctionne parce que:
Lorsque l'opérande du -perm
le test commence par /
, cela implique -perm
pour tester si l'une des autorisations spécifiées est présente.
(Si vous avez utilisé -
au lieu de /
, il testerait si tous étaient présents. Sans un préfixe, il testerait exactement l'autorisation spécifiée, c'est-à-dire tous et aucun autre présent.)
C'est l'opposé de ce que vous recherchez - aucun est l'opposé de tout - et l'opérateur pas \!
annule le résultat du test qui le suit.
(L'opérateur est vraiment !
, et vous pouvez probablement l'écrire de cette façon, mais il est généralement écrit comme \!
pour s'assurer que son Shell le transmet à find
plutôt que de le traiter spécialement.)
Quant à la signification des chaînes spécifiques après /
, voir FilePermissions , cet article Wikipedia , et/ou man chmod
. En résumé, comme appliqué aux commandes ci-dessus:
070
est une chaîne d'autorisations octale, spécifiant les autorisations pour l'utilisateur (c'est-à-dire le propriétaire), le groupe et les autres (c'est-à-dire tout le monde), respectivement. 7 est lu (4), écrit (2) et exécute (1) les autorisations (c'est-à-dire 111
a la 1
bits dans 100
, 010
, et 001
).g+rwx
est une chaîne d'autorisations symboliques, spécifiant que le groupe (g
) a lu (r
), écrit (w
) et exécuté (x
) autorisations.Quelle que soit la notation que vous utilisez, rappelez-vous que vous exprimez le contraire de ce que vous voulez finalement, car le résultat du test est annulé par !
.
Pour rechercher un fichier dans le répertoire en cours ou ses sous-répertoires pour lesquels aucun groupe de bits de lecture, d'écriture ou d'exécution n'est défini, exécutez:
find . ! -perm /g+rwx
Avec des commandes simples depuis votre terminal privé, exécutez:
Sudo df --local -P | awk {'if (NR!=1) print $6'} | xargs -I '{}' find '{}' -xdev -nogroup -ls