Почему возможно относиться к закрытому stderr под ударом?

Я предполагаю, что Вы выполняете последнюю версию человечности или распределения на основе выскочки. Можно проверить /var/log/daemon.log для ошибок.

Стандарт su берет синтаксис su [options] [username]. Контроль man 1 su. Вы могли бы хотеть попробовать:

su -c "myCommand" anotheruser >> "myLogfile.log"

Кроме того, несколько вещей произошли бы (главным образом не желательный)

  1. myLogfile.log принадлежал бы root.
  2. myLogfile.log был бы создан на / (корневой каталог), если Вы не используете полный путь как /tmp/myLogfile.log (потому что выскочка работает с набором pwd к /).

Если Вы хотите, чтобы файл принадлежал anotheruser Вы могли бы переключить команду на.

su -c "myCommand >> /tmp/myLogfile.log" anotheruser

Это могло бы вызвать проблемы, если у Вас есть остаток myLogfile.log принадлежавший root от более ранних выполнений или если не изменились myLogfile.log к чему-то как /tmp/myLogfile.log (обычно, обычные пользователи не могут создать файлы на корневом каталоге /).

4
18.02.2013, 19:22
1 ответ

Куда ошибка была бы отправлена при выполнении file_2?

Когда Вы вводите ./file_2 (с упомянутым исполняемым файлом файла), система на самом деле работает /bin/sh ./file_2 - т.е. это выполняет новую копию /bin/sh, который ответственен за выполнение команд в ./file2, и для создания отчетов об ошибках это находит там, производя их к stderr.

Но Вы только что выполнили это /bin/sh с закрытым stderr. Таким образом, это хочет испустить ошибку, но нигде не должно делать так.

С которым можно проверить:

$ strace -e write,dup2 -fo /dev/stdout sh -c 'echo foo >&2' 2>&-
8785  dup2(2, 1)                        = -1 EBADF (Bad file descriptor)
8785  write(2, "sh: 1: ", 7)            = -1 EBADF (Bad file descriptor)
8785  write(2, "2: Bad file descriptor", 22) = -1 EBADF (Bad file descriptor)

dup2 сбои, потому что fd 2 закрывается, sh попытки сообщить об ошибке относительно stderr, но это перестало работать, а также stderr (fd 2) закрывается.

5
27.01.2020, 20:54

Теги

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