web-dev-qa-db-fra.com

Pourquoi les points d'interrogation apparaissent-ils lorsque vous modifiez les autorisations du répertoire?

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

user@ubuntu:/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 suivant

user@ubuntu:/var/log$ Sudo chmod -R 644 squid*
user@ubuntu:/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 qu'après le changement des autorisations, il y a des points d'interrogation partout. Pourquoi cela arrive-t-il? Je veux essentiellement lire le journal des accès pour voir si le serveur squid-deb-proxy reçoit les demandes du client ou non.

31
Registered User

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

ls -ld squid3

Pour lire un fichier, son autorisation de lecture doit être définie. Cependant, pour lire un répertoire et la liste de ses fichiers, les autorisations de lecture et d'exécution doivent être définies . S'ils ne le sont pas, 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:

  • chmodest le nom de la commande, à utiliser pour modifier les autorisations des fichiers.
  • -R est l'indicateur récursif. Cela signifie appliquer cette commande au répertoire et à tous ses enfants, et des enfants de ses enfants, etc.
  • asignifie tout: appliquez ces autorisations au propriétaire du fichier, au propriétaire du groupe du fichier et à tous les autres utilisateurs.
  • + signifie ajouter les autorisations suivantes si elles ne sont pas déjà définies.
  • rsignifie le droit de lecture.
  • Xdésigne l'autorisation d'exécution, mais uniquement sur les répertoires. xen minuscule signifierait l'autorisation d'exécution sur les fichiers et les répertoires.

Pour plus d’informations, reportez-vous à la page de manuel relative à la commande chmodname__ Manpage icon .

37
Flimm

J'ai eu ce problème également. Je ne pouvais pas faire chmod ou chown sur le fichier. J'avais essayé de le supprimer. Il s'est avéré que le fait d'essayer de le supprimer (commande rm) était à l'origine du problème. Le kicker est le suivant le fichier est partagé entre deux systèmes différents. ne fois que j'ai fermé le fichier 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’avais ouvert le fichier en utilisant la commande less (en cygwin, ce n’est pas forcément pertinent).

3
Alan

Comme vous avez indiqué que votre objectif est de lire /var/log/squid/access.log, votre meilleure solution consiste à taper Sudo less /var/log/squid/access.log, ce qui évite les problèmes de modification répétée du code.

2
guntbert