Почему действительно тестирует сбой-e на файле в каталоге только с полномочиями чтения?

Если у вас нет файла /var/log/cron, вы можете восстановить команды (но не тайминги) из syslog.

grep 'CRON.*(yourusername)' /var/log/syslog

затем вы можете определить большинство временных интервалов, посмотрев на метки даты.

2
29.08.2018, 18:31
2 ответа

Поскольку даже системный вызов stat(2)не может работать для любого файла в каталоге, в котором отсутствует бит xв разрешениях, все, что основано на системном вызове stat(2), не будет работать в таком каталоге.

Если в вашем каталоге установлен бит r, вы действительно можете прочитать содержимое этого каталога, используя readdir(), но вы не можете statили openлюбой файл.

Напротив, каталог с установленным битом xпозволяет вам использовать файлы stat(2)или open, если вы знаете связанные имена файлов, но вы не можете использовать readdir()для извлечения содержимого связанного каталога..

test -eзавершается с не -нулевым статусом в случае, если файл не существует (после разрешения символической ссылки, так что это также относится к существующим символическим ссылкам на несуществующим -или недоступные -файлы )или любая ошибка при попытке stat(2)связанного файла.

4
27.01.2020, 21:52

Чтобы дополнить прекрасный ответ @schily, один из способов проверить, что данный каталог, к которому у вас есть доступ для чтения, но не обязательно доступ для поиска , содержит запись с заданным именем, — это прочитать содержимое этого каталог и найдите это имя файла.

Для этого можно использовать подстановку оболочки.

set -- /tmp/semi-secret/[f]oobar.txt
if [ "$1" = /tmp/semi-secret/foobar.txt ]; then
  echo exists
fi

С помощью zshвы также можете:

if ()(($#)) /tmp/semi-secret/foobar.txt(N); then
  echo exists
fi

С findреализациями, поддерживающими-maxdepth:

if find /tmp/semi-secret -mindepth 1 -maxdepth 1 -name foobar.txt -print |
     grep -q '^'; then
  echo exists
fi

За исключением решения zsh, сложно адаптироваться к произвольным именам файлов.

3
27.01.2020, 21:52

Теги

Похожие вопросы