Я создал каталог d
и файл f
внутри него. Затем я дал себе только права на чтение в этом каталоге. Я понимаю, это должно означать, что я могу перечислить файлы (например, здесь ), но я не могу.
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>
Если я изменю права на запись и выполнение, я смогу увидеть файл.
will@wrmpb /p/t/permissions> chmod 500 d
will@wrmpb /p/t/permissions> ls d
f
will@wrmpb /p/t/permissions>
Почему это? Я использую MacOS.
Изменить: со ссылкой на ответ @ ccorn, уместно, что я использую рыбу и type ls
дает следующее:
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
источник
источник
alias ls='ls -G'
, что, как я думаю, делают многие люди.Ответы:
Некоторые приготовления, просто чтобы убедиться, что
ls
не пробует больше вещей, чем следует:Демонстрация
r
разрешения каталога:В традиционных файловых системах Unix каталог был просто списком пар (имя, номер инода). Номер inode - это целое число, используемое в качестве индекса в таблице inode файловой системы, где хранятся остальные метаданные файла.
r
Разрешение на каталоге позволяет перечислить имена в нем, но не для доступа к информации , хранящейся в таблице инф.узлов, то есть, получить тип файла, размер файла, права доступа к файлам и т.д., или открытие файла. Для этого вам нужноx
разрешение на каталог.Вот почему
ls -l
,ls -F
,ls
с помощью цветового кода и т.д. выходных не в состоянии безx
разрешения, в то время как лишьls
успешно.x
Разрешение в одиночку обеспечивает доступ инода, что, учитывая явное имя этого каталога,x
позволяет посмотреть его инод и доступ к метаданным , что запись каталога в:Поэтому, чтобы открыть файл
/a/b/c/f
или список его метаданных, в каталогах/
,/a
,/a/b
, и/a/b/c
должно быть предоставленоx
разрешение.Неудивительно, что для создания записей каталога требуются оба разрешения
w
иx
разрешения:В Википедии есть краткий обзор в статье о разрешениях файловой системы .
источник
/bin/ls d
показывает содержимое для меня. Благодарность!-G
для цветного вывода, который требует метаданных, то естьx
химической завивки). Поэтому мои препараты сunalias ls
аunset CLICOLOR
. Я должен был добавить,unset -f ls
чтобы удалить любое такое определение функции, а также. Ред.Чтобы прочитать каталог, вы также должны быть в состоянии перейти в него (бит x). Итак, как минимум, вам нужен rx для каталога, чтобы иметь к нему доступ любым способом.
источник
ls
должен по-прежнему иметь возможность перечислять файлы в каталоге, даже если каталог не является исполняемым.