Использование теневых паролей в программах на Си
По большому счету ничего сложного в реализации поддержки теневых паролей нет, за исключением того, что программа должна быть запущена пользователем root (или использовать SUID root), для того, чтобы получить права доступа к файлу /etc/shadow.
Это незначительное замечание приводит, тем не менее к возникновению серьезной проблемы — при создании программ, работающих с SUID необходимо очеь тщательно отлаживать программный код. Например, если программа предусматривает временный запуск оболочки, недопустимо, чтобы этот запуск поисходил при установленном SUID равном root.
В большинстве случаев, если вам необходимо реализовать программу, которая может проверять пароли, но не нуждается ни в каких других функциях root, целесообразно воспользоваться идентификатором shadow.
В приведенном ниже примере мы не используем эту возможность, поскольку демон pppd-1.2.1d и ранее работал с SUID root, а поэтому добавление поддержки теневых паролей не приведет у повышению уязвимости программы.