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.
Pour afficher les autorisations d'un répertoire, vous devez passer l'indicateur -d
à ls
name__, 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:
chmod
est 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.a
signifie 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.r
signifie le droit de lecture.X
désigne l'autorisation d'exécution, mais uniquement sur les répertoires. x
en 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 chmod
name__ .
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).
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.