Perché compaiono i caratteri del punto interrogativo quando si modificano le autorizzazioni della directory?


33

Sto provando a modificare temporaneamente le autorizzazioni di una cartella le cui autorizzazioni iniziali sono

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

a qualcosa che segue

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

Noterai che dopo il cambio di autorizzazioni ci sono punti interrogativi ovunque. Perché sta succedendo? Fondamentalmente voglio leggere il registro di accesso per vedere se il server squid-deb-proxy sta ricevendo richieste dal client o meno.

Risposte:


38

Per visualizzare le autorizzazioni di una directory, è necessario passare il -dflag a ls, in questo modo:

ls -ld squid3

Per leggere un file, è necessario impostare l'autorizzazione di lettura. Tuttavia, per leggere una directory e l'elenco dei suoi file, è necessario impostare sia le autorizzazioni di lettura che quelle di esecuzione . Se non lo sono, ricevi strani errori come quelli che stai riscontrando.

Per impostare l'autorizzazione di lettura sui file e le autorizzazioni di lettura ed esecuzione ricorsivamente sulle directory, utilizzare questo comando:

chmod -R a+rX directoryname

Ecco una spiegazione di quel comando:

  • chmod è il nome del comando, utilizzare per modificare le autorizzazioni dei file.
  • -Rè la bandiera ricorsiva. Significa applicare questo comando alla directory, a tutti i suoi figli, ai figli dei suoi figli e così via.
  • a sta per tutti: applica queste autorizzazioni il proprietario del file, il proprietario del gruppo del file e tutti gli altri utenti.
  • + significa aggiungere le seguenti autorizzazioni se non sono già impostate.
  • r indica il permesso di lettura.
  • Xindica l'autorizzazione di esecuzione, ma solo nelle directory. Le lettere minuscole xsignificherebbero l'autorizzazione di esecuzione su file e directory.

Ulteriori informazioni sono disponibili nella manpage del chmodcomandoIcona Manpage .


1
c'è qualcosa di sbagliato nell'utilizzarechmod -R 644 squid*
Utente registrato

4
@RegisteredUser: si. 644 è rw-r--r--, che è adatto per i file, ma non per le directory. Anche le directory devono avere il permesso di esecuzione impostato, in questo modo: rwxr-xr-xo 755. Il comando menzionato disattiva in modo ricorsivo il permesso di esecuzione su tutti i file e le directory, causando questi errori.
Flimm,

3

Ho avuto anche questo problema. Non ho potuto fare chmod o chown sul file. Avevo provato a eliminarlo. Si scopre che il tentativo di eliminarlo (comando rm) ha causato il problema. Il kicker è che il file è condiviso tra due diversi sistemi . Una volta chiuso il file nell'altro sistema, il file è scomparso. Ecco maggiori dettagli sulla mia configurazione. sistema 1: VM guest Ubuntu. Qui è dove ho eseguito il comando rm. sistema 2: host Windows 7. È qui che ho aperto il file usando il comando less (in cygwin, non che sia necessariamente rilevante).


2

Come hai affermato che il tuo obiettivo è leggere /var/log/squid/access.log, la soluzione migliore è digitare sudo less /var/log/squid/access.log, il che risparmia il problema di ripetere ripetutamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.