Pourquoi les points d'interrogation apparaissent-ils lors de la modification des permissions du répertoire?

28

J'essaie de modifier temporairement les autorisations d'un dossier dont les autorisations initiales sont

[email protected]:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

à quelque chose à suivre

[email protected]:/var/log$ sudo chmod -R 644 squid*
[email protected]:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

Vous remarquerez après le changement des autorisations qu'il y a des points d'interrogation partout. Pourquoi cela arrive-t-il? Je veux essentiellement lire le journal d’accès pour voir si le serveur squid-deb-proxy reçoit des demandes du client ou non.

    
posée Registered User 16.01.2013 - 21:08
la source

3 réponses

31

Pour afficher les autorisations d'un répertoire, vous devez transmettre l'indicateur -d à ls , comme ceci:

ls -ld squid3

Pour lire un fichier, son autorisation de lecture doit être définie. Toutefois, pour lire un répertoire et la liste de ses fichiers, les autorisations de lecture et d’exécution doivent être définies à la fois . Si ce n'est pas le cas, vous obtenez des erreurs étranges comme celles que vous rencontrez.

Pour définir l'autorisation de lecture sur les fichiers et les autorisations de lecture et d'exécution sur les répertoires de manière récursive, utilisez cette commande:

chmod -R a+rX directoryname

Voici une explication de cette commande:

  • chmod est le nom de la commande, utilisé pour modifier les autorisations des fichiers.
  • -R est l'indicateur récursif. Cela signifie appliquer cette commande au répertoire, à tous ses enfants, aux enfants de ses enfants, etc.
  • a correspond à tous: appliquer ces autorisations au propriétaire du fichier, au propriétaire du groupe et à tous les autres utilisateurs.
  • + signifie ajouter les autorisations suivantes si elles ne sont pas déjà définies.
  • r signifie l'autorisation de lecture.
  • X signifie l'autorisation d'exécution, mais uniquement sur les répertoires. La valeur minuscule x signifierait l'autorisation d'exécution sur les fichiers et les répertoires.

Vous trouverez plus d’informations dans la page de manuel de la commande chmod .

    
réponse donnée Flimm 16.01.2013 - 21:26
la source
3

J'ai aussi eu ce problème. Je ne pouvais pas faire chmod ou chown sur le fichier. J'avais essayé de le supprimer. Il s'avère que la tentative de suppression (commande rm) a causé le problème. Le premier est que le fichier est partagé entre deux systèmes différents . Une fois le fichier fermé dans l’autre système, le fichier a disparu. Voici plus de détails sur ma configuration. système 1: machine virtuelle invitée Ubuntu. C'est là que j'ai fait la commande rm. système 2: hôte Windows 7. C'est là que j'ai ouvert le fichier en utilisant la commande moins (dans cygwin, pas nécessairement pertinent).

    
réponse donnée Alan 21.04.2016 - 20:24
la source
2

Comme vous l’avez déclaré, votre objectif est de lire /var/log/squid/access.log , votre meilleure solution est de taper sudo less /var/log/squid/access.log , ce qui évite les problèmes de chmodding répétés.

    
réponse donnée guntbert 16.01.2013 - 21:56
la source

Lire d'autres questions sur les étiquettes