Если у меня есть каталог, на который у пользователя есть разрешение на чтение, почему невозможно проверить, есть ли файл в этом каталоге. Например, предположим, у меня есть папка /myfolder с разрешением на чтение. В этой папке есть файл 'garbage.txt' с разрешением на чтение (для пользователя). Когда я пытаюсь использовать stat /myfolder/garbage.txt, я получаю ошибку «отказано в доступе». Если я добавлю разрешение на выполнение для /myfolder, то я смогу проверить, существует ли trash.txt.
Почему мне нужны права на выполнение, чтобы проверить, существует ли файл в папке. Я ожидал, что прав на чтение для каталога/папки будет достаточно.
решение1
В Linux разрешения для папок следующие:
Бит записи позволяет затронутому пользователю создавать, переименовывать или удалять файлы в каталоге, а также изменять атрибуты каталога.
Бит чтения позволяет затронутому пользователю просматривать список файлов в каталоге.
Бит выполнения позволяет затронутому пользователю войти в каталог и получить доступ к файлам и каталогам внутри него.
В липком бите указано, что файлы и каталоги внутри этого каталога могут быть удалены или переименованы только их владельцем (или пользователем root)
Больше информации:
решение2
Права на выполнение в каталоге позволяют вам перемещаться по этому каталогу. И вам нужно иметь возможность перемещаться в каталог, чтобы использовать stat для этого файла.
Смотрите такжеhttps://stackoverflow.com/questions/790686/understanding-linux-directory-permissions-reasoning