2012-04-23 3 views
4

Я создал жесткую ссылку для теневого файла. Для удаления passwd пользователя я открыл теневой файл в редакторе vi и удалил зашифрованный пароль и затем сохранил. Изменено значение inode теневого файла. Затем я обновил пароль пользователя и снова изменил значение inode теневого файла. Почему индекс теневого файла изменяется, когда он редактируется/обновляется?Почему изменяется значение inode теневого файла?

+0

Я не думаю, что этот вопрос связан с программированием. – glglgl

ответ

2

VI сохраняет данные в новом файле, а затем либо отключает, либо переименовывает старую запись. Жесткая ссылка связана со старой.

Это один из двух способов обеспечения согласованности данных для сохранения случая.

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

0

Код, который обрабатывает запись в файле, создает копию всего файла, как он должен существовать на диске, перед тем как файл будет записан. После того, как файл был записан на диск и сброшен, он переименовывается в собственное имя (/ etc/shadow или/etc/gshadow, для групповых теневых файлов).

Проблема заключается не только в согласованности данных. Существует небольшое количество файлов, которые должны присутствовать, чтобы система могла использоваться, а некоторые файлы безопасности - файлы безопасности. Цель состоит в том, чтобы избежать ситуации, в которой может произойти сбой системы, или соответствующая команда может быть приостановлена ​​(клавиша Ctrl-Z или SIGSTOP ...), и файлы находятся в небезопасном состоянии. «Insecure» также может включать «не существует» - неатомное переименование файла может оставить временной интервал, когда файл/etc/shadow вообще не существует.

Смежные вопросы