Записать в файл без перенаправления?

Один побочный эффект, о котором я могу думать:

  1. Будьте в спящем режиме system1 (использующий раздел подкачки для спящего режима).
  2. Начальная загрузка system2.

Вы могли потерять данные.

12
22.02.2011, 21:18
4 ответа

Как насчет этого:

echo -n 'magic' | sudo tee /some/where/file > /dev/null

Уверенный существуют перенаправления в этот, но только кладут выполнения для первого удара как корень не оболочка. Работы с dd of=... также.

11
27.01.2020, 19:55
  • 1
    Извините, я, очевидно, испытываю затруднения при объяснении в последнее время. Проблема состоит в том, что, когда я хочу выполнить что-то с поднятыми полномочиями, я должен пройти специальный вызов библиотеки (что-то как doCommandAsRoot). И эта функция только принимает путь к команде и ее аргументам, таким образом, нет никакого способа для меня использовать перенаправление вывода сразу же. Я мог пройти оболочку (как показано в вопросе), но мне не нравится это мудрое безопасностью. –  zoul 22.02.2011, 18:10
  • 2
    @zoul: Я думал, что Вы пишете сценарий оболочки. Это в порядке для записи волшебного cookie в файл, который доступен для непривилегированных процессов? Если это - затем запись это в такой файл и вызов doCommandAsRoot("dd", "if=/tmp/unprotected_file", "of=/some/where/file"). –  stribika 22.02.2011, 18:28
  • 3
    Нет, это - обычное скомпилированное приложение (обновленный вопрос). Я просто ищу команды “оболочки” для служения в качестве помощника так, чтобы я не писал это сам. Да, cookie является ничем чувствительным. dd пример достаточно близок к тому, что я хочу, спасибо. Вы могли думать о чем-то еще более простом? –  zoul 22.02.2011, 18:38
  • 4
    Уверенный — Вы могли использовать cp или mv вместо dd. –  mattdm 22.02.2011, 18:51
  • 5
    я имею в виду более простой как без потребности скопировать :) –  zoul 22.02.2011, 18:54

Существует другое соображение, которое является, что Вы не хотите помещать значение волшебного cookie на командной строке, так как это может наблюдаться другими пользователями. Даже если программа является недолгой (включая если нули программы строка командной строки), существует возможность для нападения. Так, теоретическое:

writestringtofile 'magic' /some/where/file

опасный подход. Поэтому я подтверждаю предложение @stribika: запишите значение во временный файл и скопируйте его в место. Удостоверьтесь, что использовали безопасную функцию для создания временного файла (mkstemp()) так, чтобы не было состояния состязания там также.

5
27.01.2020, 19:55
  • 1
    Спасибо, это - полезное обсуждение. К счастью, “волшебный cookie” не является устройством безопасности, он может быть явно замечен кем-либо. –  zoul 22.02.2011, 20:39

Без перенаправления вывода, без канала, но с «здесь строка»:

dd of=/some/where/file <<<'magic'
8
27.01.2020, 19:55

губка от moreutils -впитывает стандартный ввод и записывает в файл:

echo -n 'magic' | sponge /some/where/file

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

См. еще

3
26.03.2020, 20:36

Теги

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