
Я создал жесткую ссылку для теневого файла. Для удаления пароля пользователя я открыл теневой файл в редакторе vi и удалил зашифрованный пароль, а затем сохранил. Значение инода теневого файла изменилось. Затем я обновил пароль пользователя, и снова значение инода теневого файла изменилось. Почему изменяется инод теневого файла при его редактировании/обновлении?
решение1
Обычная реализация смены пароля включает в себя жесткую ссылку /etc/shadow
на /etc/stmp
(или какое-либо похожее имя; link()
будучи атомарным в локальных файловых системах, это представляет собой своего рода механизм блокировки файла), запись нового во временный файл, затем переименование исходного /etc/shadow
в /etc/shadow-
или похожее и переименование временного в /etc/shadow
. Это делается для надежности: в любое время исходный shadow
файл, неизмененный, все еще существует и может быть легко восстановлен, даже если питание отключится в самый неподходящий момент или произойдет что-то столь же плохое (если только это не уничтожит весь диск).