Единственный процесс доступный временный файл

Необходимо использовать

grep "MyVariable = \(False\|True\)" FormA.frm

где \| упорядочьте означают альтернативу и разделители \( и \) для группировки.

4
03.05.2013, 02:03
2 ответа

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

  1. Используйте временный файл в нормальном mkstemp значение. mkstemp возвращает число дескриптора файла несвязанному файлу. Можно затем создать $FOO/mypasswd как символьная ссылка на /proc/self/fd/returned_number. Существует маленькое окно, где файл существует (между открытым, и удалите связь), и что-то еще работающее, поскольку тот же пользователь мог открыть его и держать дескриптор файла для позже чтения пароля. Можно быть уверены, что это не будет записано в диск, если временный каталог будет на tmpfs.
  2. Если это не должно seek файл паролей, использовать pipe/pipe2 для создания дескрипторов файлов затем возобновите как выше символьную ссылку. Необходимо будет разветвить дочерний процесс для обработки питания пароля к каналу.
  3. Можно, вероятно, злоупотребить FUSE, чтобы сделать это.
  4. Вы могли использовать LD_PRELOAD (или другие динамические приемы компоновщика) для "зафиксированного" библиотеки путем прерывания open/read/close, и подайте его пароль от где-нибудь нормального.

Ни один из них не действительно безопасен от других процессов. Другие процессы, работающие как тот же пользователь, могли, например, ptrace Ваш процесс и считал пароль непосредственно из памяти.

4
27.01.2020, 20:54
  • 1
    Спасибо, опция 2 является лучшей для того, что я хотел, и все очень интересны. –  Neil Mitchell 04.05.2013, 09:30
#!/bin/bash
exec 3<>file
rm file
exec program

Быть точным: существует состояние состязания. И программа должна использовать дескриптор файла. Если необходимо передать путь к файлу, затем используют /proc/self/fd/3. Но теоретически файл (даже при том, что удаленный) доступен через этот путь proc для других процессов, также.

1
27.01.2020, 20:54
  • 1
    Каковы 3 <> синтаксис? Что это делает? –  Neil Mitchell 04.05.2013, 09:31
  • 2
    @NeilMitchell > открывает файл для записи, < для чтения, и <> для чтения и записи. Это устанавливает связь от FD 3 до определенного inode даже нет никакой записи файла ни в каком каталоге для него (предположил, что не было никакого второго hardlink перед rm). Когда процесс выходит, FD закрывается, и подсчет ссылок inode уменьшен к нулю, эффективно удалив файл (выпускающий выделенные блоки). –  Hauke Laging 04.05.2013, 15:45

Теги

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