web-dev-qa-db-fra.com

Comment lister les fichiers publics dans mon répertoire personnel? (mode 777)

Je souhaite obtenir la liste de tous les fichiers de mon dossier de départ, avec les autorisations rwx (lecture-écriture-exécution) ou 777 pour tout le monde.

En outre, quelle est la commande pour connaître les autorisations d'un fichier?

7
Eight

Depuis le terminal:

  • Le terminal s'ouvre dans votre répertoire personnel par défaut. Partout ailleurs, tapez cd ~ pour revenir au répertoire principal.

  • ls -l vous montrera les autorisations de fichier au début, par exemple.

    -rwxr-xr-x 1 izx izx 11217428 Oct 2 2011 wkhtmltoimage-AMD64

Première méthode: la méthode watch-and-learn

  • Vous pouvez ensuite filtrer avec grep pour obtenir le résultat souhaité:

    ls -l | grep -P ".{7}rwx.*"
    • l'expression régulière ici indique à grep de ne sélectionner que les lignes où les caractères 8 à 10 sont rwx
  • qui dans mon répertoire personnel montre:

     - rwxrwxrwx 1 izx izx 0 juin 15 23:42 sd.png 
     - rwxrwxrwx 1 izx izx 0 juin 15 23:42 slashdot.png 
     drwxrwxrwx 3 izx izx 4096 juin 15 21:31 src 
    

Deuxième méthode: la manière correcte et récursive

  • Dans votre répertoire personnel, tapez find . -perm -a+rwx

    • Vous dites find de rechercher dans le répertoire (home) actuel et dans tous les sous-répertoires les fichiers rwx de tous; les résultats seront affichés avec des chemins relatifs complets, par ex.
     ./. mozilla/firefox/lr5z24b3.default/lock 
    ./src
     ./ src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so 
     ./ src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.la 
     ./ src/accountsservice-0.6.15/src/libaccountsservice/.libs/libaccountsservice.so.0 
     ./ src/accountsservice-0.6.15/debian/libaccountsservice-dev/usr/lib/libaccountsservice.so 
     ./ src/accountsservice-0.6.15/debian/libaccountsservice0/usr/lib/libaccountsservice.so.0 
     ./ src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so 
     ./ src/accountsservice-0.6.15/debian/tmp/usr/lib/libaccountsservice.so.0 
     ./. Pulse/676238f89edd1f57138b3da400000004-runtime 
    ./sd.png./slashdot.png
     ./ XnView/lib/libQtGui.so.4 
     ./ XnView/lib/libQtWebKit.so.4 
     ./ XnView/lib/libQtXml.so.4 
     ./ XnView/lib/libQtDBus.so.4 
     ./ XnView/lib/libQtNetwork.so.4 
     ./ XnView/lib/libQtCore.so.4 
     ./ XnView/lib/libQtSvg.so.4 
    
  • Les entrées en gras dans le répertoire personnel sont également apparues dans la première méthode.


Pour plus de façons d'utiliser find pour accomplir ce que vous voulez, veuillez vous reporter à réponse d'Eliah Kagan juste au-dessus ou en dessous de celui-ci.

12
ish

En général, vous utiliseriez la commande ls pour connaître les autorisations des fichiers. Mais pour une tâche spécifique, pour laquelle vous souhaitez répertorier automatiquement les fichiers dotés de certaines autorisations, l'utilisation de ls, même si vous filtrez la sortie avec un autre utilitaire tel que grep, deviendra rapidement très complexe à effectuer correctement. Donc, pour de telles tâches, il vaut mieux utiliser find.

Si vous voulez lister tous les fichiers qui sont ...

  1. contenait n'importe où dans votre répertoire personnel (y compris dans les sous-répertoires de votre répertoire personnel, les sous-répertoires de ces sous-répertoires, etc.), et

  2. qui sont aussi explicitement lisibles, inscriptibles et exécutables par tout le monde

... alors cette commande le fera pour vous:

_find ~ -perm 777
_

C'est vraiment aussi simple que cela.

Si vous souhaitez uniquement répertorier les fichiers répondant aux deux conditions ci-dessus et résidant directement dans le répertoire de base (et non dans un sous-répertoire), utilisez plutôt la commande suivante:

_find ~ -maxdepth 1 -perm 777
_
  • Dans ce cas, _777_ indiquera les fichiers lisibles, inscriptibles et exécutables pour vous, votre groupe et tous les autres. Si certains fichiers peuvent avoir des ensembles d'autorisations étranges, tels que 477 (vous pouvez lire le fichier et tout le monde peut exécuter et écrire le fichier), vous voudrez probablement utiliser:

    _find ~ -maxdepth 1 -perm -o+rwx
    _

    Le trait d'union précédant _-o+rwx_ signifie que le fichier peut avoir d'autres autorisations, et _o+rwx_ signifie que autres (en dehors du groupe et de l'utilisateur propriétaire de ce fichier) peut lire, écrire et exécuter ce fichier sans vérifier aucune autre autorisation.

Voir man find pour plus d'informations sur la manière d'effectuer ces opérations et des opérations similaires, et man chmod pour connaître la signification de _777_ et d'autres modes numériques. .

4
Eliah Kagan
  • Ouvrez le terminal.
  • Accédez au répertoire dans lequel vous souhaitez connaître les autorisations du fichier à l'aide de la commande:

    cd "Directory"
    
  • Remplacez le texte entre guillemets par le nom de répertoire dont vous avez besoin.

  • Puis entrez une autre commande:

    ls -l
    

    Cette commande (ls) est généralement utilisée pour obtenir les noms de fichier. L'argument -l donne des informations complètes sur les fichiers.

    Ainsi, vous pourrez également voir les autorisations de fichiers.

1
Pranit Bauva