Linux: ls -l stampa solo punti interrogativi:


11

Ho un problema con l'elenco di alcune directory con ls -l:

$ ls -l ./directory
-????????? ? ? ? ?            ? file001.txt
-????????? ? ? ? ?            ? file002.txt

e funziona solo bene:

$ ls ./directory
file001.txt file002.txt

Che c'è?

Risposte:


14

Controlla le autorizzazioni di ./directory: se hai le autorizzazioni di lettura ma non esegui le autorizzazioni su questa directory, allora hai i diritti sufficienti per leggere l'elenco dei file in quella directory, ma non puoi effettivamente utilizzare questi file o ottenere informazioni su di essi.

sessione di esempio:

$ cd /tmp/
$ mkdir /tmp/test
$ touch /tmp/test/file
$ ls -la test/
total 44
drwxr-xr-x  2 myself myself  4096 janv.  5 11:01 .
drwxrwxrwt 42 root   root   54242 janv.  5 11:01 ..
-rw-r--r--  1 myself myself     0 janv.  5 11:01 file
$ chmod a-x /tmp/test # remove execute permission for all
$ ls -la test/
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? file
$ ls -ld test/
drw-r--r-- 2 myself myself 4096 Jan  5 11:01 test/
$ cat test/file 
cat: test/file: Permission denied
$ chmod a+x /tmp/test # readd execute permission for all
$ ls -la test/
total 44
drwxr-xr-x  2 myself myself  4096 janv.  5 11:01 .
drwxrwxrwt 42 root   root   54242 janv.  5 11:01 ..
-rw-r--r--  1 myself myself     0 janv.  5 11:01 file
$ ls -ld test/
drwxr-xr-x 2 myself myself 4096 Jan  5 11:01 test/
$ cat test/file
$

Alcune lsversioni mostrano messaggi di errore quando non possono visualizzare informazioni sui file.


Ma come posso sapere se il file è nella test directory o no (controlla d char per '.' E '..')?
Osgx,

1
@osgx: fa parte dell'elenco dei file, con il nome del file e il numero dell'inode. man readdirper maggiori dettagli di basso livello. Si noti che questo comportamento non è specificato da POSIX.
BatchyX,
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.