Ich habe ein Verzeichnis d
und eine Datei f
darin erstellt. Ich habe mir dann nur Leserechte für dieses Verzeichnis gegeben. Ich verstehe, dass dies bedeuten sollte, dass ich die Dateien auflisten kann (z. B. hier ), aber ich kann nicht.
will@wrmpb /p/t/permissions> ls -al
total 0
drwxr-xr-x 3 will wheel 102 4 Oct 08:30 .
drwxrwxrwt 16 root wheel 544 4 Oct 08:30 ..
dr-------- 3 will wheel 102 4 Oct 08:42 d
will@wrmpb /p/t/permissions> ls d
will@wrmpb /p/t/permissions>
Wenn ich die Berechtigungen zum Schreiben und Ausführen ändere, kann ich die Datei sehen.
will@wrmpb /p/t/permissions> chmod 500 d
will@wrmpb /p/t/permissions> ls d
f
will@wrmpb /p/t/permissions>
Warum ist das? Ich benutze MacOS.
Bearbeiten: In Bezug auf die Antwort von @ ccorn ist es wichtig, dass ich Fisch benutze, und type ls
gibt Folgendes an:
will@wrmpb /p/t/permissions> type ls
ls is a function with definition
function ls --description 'List contents of directory'
command ls -G $argv
end
permissions
osx
fish
wrgrs
quelle
quelle
alias ls='ls -G'
, was meiner Meinung nach viele Leute tun.Antworten:
Einige Vorbereitungen, nur um sicherzustellen, dass
ls
nicht mehr Dinge ausprobiert werden, als es sollte:Demonstration der
r
Verzeichnisberechtigung:In herkömmlichen Unix-Dateisystemen bestand ein Verzeichnis lediglich aus einer Liste von Paaren (Name, Inode-Nummer). Eine Inode-Nummer ist eine Ganzzahl, die als Index in der Inode-Tabelle des Dateisystems verwendet wird, in der die restlichen Dateimetadaten gespeichert sind.
Mit der
r
Berechtigung für ein Verzeichnis können Sie die Namen in diesem Verzeichnis auflisten, jedoch nicht auf die in der Inode-Tabelle gespeicherten Informationen zugreifen, dh Dateityp, Dateilänge, Dateiberechtigungen usw. abrufen oder die Datei öffnen. Dafür benötigen Sie diex
Berechtigung für das Verzeichnis.Aus diesem Grunde
ls -l
,ls -F
,ls
mit farbcodierten Ausgabe etc unfehlbarx
Erlaubnis, während ein bloßenls
gelingt.Die
x
Berechtigung allein ermöglicht den Inode-Zugriff, dh bei einem expliziten Namen in diesem Verzeichnisx
kann der Inode nachgeschlagen werden und auf die Metadaten dieses Verzeichniseintrags zugegriffen werden:Deshalb, um eine Datei zu öffnen
/a/b/c/f
oder seine Metadaten Liste, die Verzeichnisse/
,/a
,/a/b
, und/a/b/c
muss gewährt werden , diex
Erlaubnis.Es überrascht nicht, dass zum Erstellen von Verzeichniseinträgen sowohl
w
als auchx
Berechtigungen erforderlich sind :Einen kurzen Überblick bietet Wikipedia in einem Artikel zu Dateisystemberechtigungen .
quelle
/bin/ls d
zeigt den inhalt für mich. Vielen Dank!-G
kolorierter Ausgabe, die Metadaten benötigt, alsox
Dauerwellen). Deshalb meine Vorbereitungen mitunalias ls
undunset CLICOLOR
. Ich hätte hinzufügen sollenunset -f ls
, um auch solche Funktionsdefinitionen zu entfernen. BearbeitetUm ein Verzeichnis zu lesen, müssen Sie auch in der Lage sein, dorthin zu gelangen (das x-Bit). Sie benötigen also mindestens rx, damit ein Verzeichnis auf irgendeine Weise darauf zugreifen kann.
quelle
ls
sollte noch in der Lage seiner Liste die Dateien in dem Verzeichnis, auch wenn das Verzeichnis nicht ausführbar ist.