@animunculus

Почему в Linux пользователи могут менять свой пароль командой passwd, если у них нет прав на запись файла /etc/shadow?

Изменять /etc/shadow может только root, другие пользователи его не могут ни изменять, ни просмотреть. Но если пользователь самостоятельно поменяет свой пароль, то изменения всё равно запишутся в файл.
Как это работает?
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
читайте про специальные права доступа SUID и SGID, которые позволяют запускать программы от имени других пользователей. Такой флаг стоит у нескольких программ, из популярных - passwd, sudo

$ ls -sl1sFa /usr/bin/sudo /usr/bin/passwd
 60 -rwsr-xr-x 1 root root  59640 Mar 22  2019 /usr/bin/passwd*
148 -rwsr-xr-x 1 root root 149080 Jan 31 17:18 /usr/bin/sudo*


буква "s" в первой тройке означает, что стоит SUID аттрибут, следовательно программа будет запущена от имени владельца файла (root).

P.S. Со скриптами такое не работает, только с бинарниками, поскольку скрипты неявно вызывают интерпретатор отдельно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanes
@Sanes
Потому что не пользователи пишут в этот файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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