UNIX перенаправление в файл без разрешения записи системной обработки

218
ayz649

Я изучаю среду UNIX и у меня возник вопрос: когда происходит перенаправление ошибки std в файл, что произойдет, если у файла, на который мы перенаправляем, есть права на запись, в которых пользователю отказано?

Пример:

./command >file 2>&1 ./command 2>&1 >file 

Что происходит в первую очередь с сообщением об ошибке? Это автоматически сбрасывается? Я получаю одинаковую ошибку для обеих строк, что разрешение не разрешено, но так как система читает слева направо, в чем разница между способом обработки?

Любые ссылки на учебные пособия, которые входят в механизм, стоящий за этим, были бы полезны, так что пока я могу найти информацию о том, как он обрабатывает это, если у нас есть разрешения на запись.

1
Как насчет того, чтобы просто попробовать это? $ touch out1; $ chmod 000 out1; $ echo "Hello there"> out1; bash: out1: в доступе отказано MariusMatutiae 7 лет назад 1

1 ответ на вопрос

1
Tatsuyuki Ishi

Краткий ответ: команда не будет выполняться вообще.

Объяснение: перенаправление основано на дескрипторах файлов, которые необходимо создать с помощью вызова open () перед выполнением процесса.

Мой Bash просто отверг это:

$ sleep 1 2>&1 > /nonwritable -bash: /nonwritable: Permission denied 

Итак, вы видите, есть защита для большинства снарядов.

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