Как проверить учетные данные для входа в Linux, когда не работает от имени пользователя root? - PullRequest
1 голос
/ 22 декабря 2009

Я написал приложение cgi-bin на C, которое запускается в браузере и позволяет пользователю открывать интерактивную оболочку и просматривать и редактировать файлы на компьютере с Linux. Он работает как стандартный пользователь Apache "www-data". Я просто добавил экран входа в систему, где пользователь вводит свое имя и пароль (в форме), но я не могу аутентифицировать пользователя, используя getspnam , поскольку эта функция работает только при запуске от имени пользователя root.

Какие опции у меня есть, чтобы проверить учетные данные пользователя, когда он не работает от имени root?

PS: В моей интерактивной оболочке я могу набрать "su root", а затем ввести мой пароль, и он действительно повышается до уровня root, так что, очевидно, это можно сделать в интерактивном режиме.

Ответы [ 3 ]

3 голосов
/ 22 декабря 2009

Я думаю, вы хотите взглянуть на Сменные модули аутентификации . AFAIK, PAM обрабатывает все беспорядок для вас, и вам просто нужно сделать несколько вызовов функций для аутентификации пользователя на любом бэкэнде для аутентификации пользователей на хосте Linux (будь то теневые пароли, nis, ldap и т. Д.)

Вот краткое руководство по интеграции вашего кода C с ними.

1 голос
/ 22 декабря 2009

Что касается вашего PS: Хорошо, когда вы делаете su root, вы переключаетесь на пользователя root. Так что да, конечно, root может читать файл теней, вы все это уже сказали.

Что касается вашей проблемы: разве у вас не может быть, чтобы ваши процессы apache временно повышались до уровня root (вызывая setuid или аналогичный) для выполнения аутентификации?

Удачи!

0 голосов
/ 22 декабря 2009

Как и предполагалось, PAM - это современный способ сделать это. Но если вы хотите пойти в старую школу, вам нужно создать программу setuid-root (а не скрипт) для вашей аутентификации.

Существует множество ошибок с программами setuid-root, поэтому PAM, вероятно, лучше.

Вот ссылка на некоторые хорошие статьи по безопасному написанию программ setuid-root.

...