🔒 Как файл /etc/shadow блокируется или разблокируется при смене пароля с помощью команды passwd |

🔒 Как файл /etc/shadow блокируется или разблокируется при смене пароля с помощью команды passwd

Мануал

Во время смены пароля с помощью команды passwd  файл shadow заблокирован от изменения другим процессом.

326   12:45:36 open("/etc/.pwd.lock", O_WRONLY|O_CREAT|O_CLOEXEC, 0600) = 4 [0.000028]
.
.
326   12:45:36 fcntl(4, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = 0 [0.000032]

Файл /etc/.pwd.lock используется следующими функциями для блокировки или разблокировки файла /etc/shadow во время смены пароля.

1. lckpwdf ()

Функция lckpwdf () предназначена для защиты от множественного одновременного доступа к базе данных паролей shadow.

Он пытается получить блокировку и возвращает 0 в случае успеха или -1 при ошибке (блокировка не получена в течение 15 секунд).

2. ulckpwdf()

Функция ulckpwdf () снова снимает блокировку.

Обратите внимание, что нет защиты от прямого доступа к файлу  паролей. Только программы, использующие lckpwdf (), заметят блокировку.

Блокировка устанавливается с помощью команды F_WRLCK.

Команда означает, что, если какой-либо процесс уже имеет блокировку файла, он будет ожидать снятия блокировки. Обратитесь к функции ниже.

3. F_SETLKW

Эта команда такая же, как F_SETLK, за исключением того, что если общая или монопольная блокировка заблокирована другими блокировками, поток будет ждать, пока запрос не будет выполнен.

Если сигнал, который должен быть перехвачен, получен, пока fcntl () ожидает область, fcntl () будет прерван.

По возвращении из обработчика сигнала fcntl () вернет -1 с errno, установленным в [EINTR], и операция блокировки не будет выполнена.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий