authorized_keys для нескольких chrooted пользователей с одним и тем же домашним каталогом

Если программы, выполняемые из /tmp, все еще работают, вы обычно все еще можете получить исходный двоичный файл, даже если он "удален" из файловой системы, потому что инод все еще существует вместе с данными; удаление - это просто отвязка имени от каталога.

В Linux вы можете получить доступ к содержимому inode через ссылку /proc/PID/exe. Такие инструменты, как ls, покажут вам исходный путь и пометят ссылку как нарушенную (цветом), а в листинге в имени будет написано что-то вроде "(deleted)". Однако вы все еще можете получить его, прочитав файл.

Пример, демонстрирующий эту концепцию (используя sleep в качестве иллюстрации):

$ cp /bin/sleep /tmp/otherprog
$ /tmp/otherprog 300 &
[1] 3572
$ rm /tmp/otherprog
$ ls -l /proc/3572/exe
lrwxrwxrwx 1 john john 0 Feb 27 08:54 /proc/3572/exe -> /tmp/otherprog (deleted)
$ cp /proc/3572/exe /tmp/saved
$ diff /tmp/saved /bin/sleep
$ echo $?
0

Я создал "новую" программу, скопировав содержимое программы sleep в новую программу под названием "otherprog" и запустил ее так, чтобы она продолжала работать некоторое время. Затем я удалил программу из /tmp. Используя PID, который я получил из оболочки (вы можете найти PID интересующих вас программ через ps), я посмотрел на ссылку exe в /proc, затем скопировал содержимое файла (хотя имя целевого файла исчезло) и проверил, что содержимое соответствует оригиналу.

Это, конечно, не сработает, если программы из /tmp недолговечны, потому что после их выхода количество ссылок в inode упадет до того уровня, когда данные действительно будут освобождены с диска.

Это позволяет избежать гонок для копирования файла до того, как он будет отсоединен от каталога /tmp.

4
27.05.2017, 01:08
0 ответов

Теги

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