The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как проверить пароль по /etc/shadow?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 03-Апр-06, 10:13 
Есть
char *login, *passwd;
, в которых забиты логин и пароль (все - нешифрованное). Как проверить правильность логина/пароля по файлу /etc/shadow?
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как проверить пароль по /etc/shadow?"  
Сообщение от BigShadow email on 03-Апр-06, 13:05 
>Есть
>char *login, *passwd;
>, в которых забиты логин и пароль (все - нешифрованное). Как проверить
>правильность логина/пароля по файлу /etc/shadow?


зашифровать passwd
вытащить по login из /etc/shadow зашифрованный пароль
сравнить

возьмите исходники /bin/login
там все это есть

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Как проверить пароль по /etc/shadow?"  
Сообщение от jd (??) on 03-Апр-06, 15:30 
>Есть
>char *login, *passwd;
>, в которых забиты логин и пароль (все - нешифрованное). Как проверить
>правильность логина/пароля по файлу /etc/shadow?

man shadow(3), crypt(3)
вместо shadow(3) возможно будет ман getspnam(3)...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 03-Апр-06, 17:38 
>>Есть
>>char *login, *passwd;
>>, в которых забиты логин и пароль (все - нешифрованное). Как проверить
>>правильность логина/пароля по файлу /etc/shadow?
>
>man shadow(3), crypt(3)
>вместо shadow(3) возможно будет ман getspnam(3)...

А как компилить?

Я пробовал
с флагами -lshadow и -L/usr/lib/libshadow.a, но при компиляции получается:

...
main.o(.text+0x59): In function `main':
: undefined reference to `getspnam(char const*)'

Где эта getspnam?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Как проверить пароль по /etc/shadow?"  
Сообщение от jd (??) on 03-Апр-06, 21:30 
>main.o(.text+0x59): In function `main':
>: undefined reference to `getspnam(char const*)'
>
>Где эта getspnam?

У меня она в glibc (то есть никаких дополнительных ключей не требуется), а где у вас - не знаю. Что за система-то хоть?

В мане нет упоминаний о каких-либо стандартах, так что возможно она есть не во всех системах. Но в Linux и SunOS вроде есть. В SunOS, насколько я понял, тоже в libc.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 03-Апр-06, 21:49 
>>main.o(.text+0x59): In function `main':
>>: undefined reference to `getspnam(char const*)'
>>
>>Где эта getspnam?
>
>У меня она в glibc (то есть никаких дополнительных ключей не требуется),
>а где у вас - не знаю. Что за система-то хоть?

Да Slackware 10.2 обычная, ну и glibc вроде стоит последняя...

Я ее еще поищу. Чем можно посмотреть, какие функции в библиотеке наличисвуют?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 03-Апр-06, 23:39 
Видно, что-то мне на работе мешало ;) Все работает, а из дополнительных библиотек нужна только -lcrypt. По крайней мере, /etc/shadow проверяется такой вот програмкой:

-------------8<----------------------------------------------------------------
// Проверялось на Slackware 10.2, где, правда, ядро и многое другое обноовлено
#include <string.h>
#include <stdio.h>
#include <shadow.h>
#include <pwd.h>
int shadow_check(char *user, char *passwd)
{
  struct passwd *pw = getpwnam(user);
  if (pw == NULL || pw->pw_passwd == '\0') {
    return (0);
  }
  struct spwd *spwd;
  spwd = getspnam(user);
    char *epasswd = (char*)crypt(passwd, spwd->sp_pwdp);
  if (strcmp(epasswd, spwd->sp_pwdp) != 0) {
    return (0);
  }
  return (-1);
}

int main(int argc, char **argv)
{
  printf("%d\n", shadow_check("snm", "mnyammhrumm"));
  return 0;
}
-------------8<----------------------------------------------------------------
Спасибо за помощь.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Как проверить пароль по /etc/shadow?"  
Сообщение от имя on 03-Апр-06, 23:47 
>Видно, что-то мне на работе мешало ;) Все работает, а из дополнительных
>библиотек нужна только -lcrypt. По крайней мере, /etc/shadow проверяется такой вот
>програмкой:
>
>-------------8<----------------------------------------------------------------
>// Проверялось на Slackware 10.2, где, правда, ядро и многое другое обноовлено
>
>#include <string.h>
>#include <stdio.h>
>#include <shadow.h>
>#include <pwd.h>
>int shadow_check(char *user, char *passwd)
>{
>  struct passwd *pw = getpwnam(user);
>  if (pw == NULL || pw->pw_passwd == '\0') {
>    return (0);
>  }
>  struct spwd *spwd;
>  spwd = getspnam(user);
>    char *epasswd = (char*)crypt(passwd, spwd->sp_pwdp);
>  if (strcmp(epasswd, spwd->sp_pwdp) != 0) {
>    return (0);
>  }
>  return (-1);
>}
>
>int main(int argc, char **argv)
>{
>  printf("%d\n", shadow_check("snm", "mnyammhrumm"));
>  return 0;
>}
>-------------8<----------------------------------------------------------------
>Спасибо за помощь.


а может в даном случе стоит использовать PAM?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 03-Апр-06, 23:56 
>а может в даном случе стоит использовать PAM?

А чем он лучше?

Честно говоря, я не великий специалист, поэтому пока не осознаю его преимущества. В моем случае решение принимает cgi-программа (apache, ssl-соединение) на основе файла /etc/shadow и данных, которые пользователь ввел в форму.

Я бы и pam попробовал. Если у вас есть коротенький примерчик, с удовольствием его применю...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Как проверить пароль по /etc/shadow?"  
Сообщение от chip email(ok) on 04-Апр-06, 11:54 
>>а может в даном случе стоит использовать PAM?
>
>А чем он лучше?

Pluggable Authentication Module Library

Своей модульностью. Например, если в дальнейшем понадобится еще авторизовывать клиентов по mysql, ldap будет достаточно добавить модуль к pam. Сам же код приложение не изменится. В остальном (для примеров) достаточно обратить внимание на любой мало-мальски популярный сетевой продукт.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Как проверить пароль по /etc/shadow?"  
Сообщение от chainik (??) on 04-Апр-06, 12:01 
>ldap будет достаточно добавить модуль к pam. Сам же код приложение
>не изменится. В остальном (для примеров) достаточно обратить внимание на любой
>мало-мальски популярный сетевой продукт.

А можете посоветовать какой-нибудь продукт с минимальным, но достаточным количеством кода? - в длинных программах трудно выискивать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Как проверить пароль по /etc/shadow?"  
Сообщение от имя on 04-Апр-06, 15:32 
>>ldap будет достаточно добавить модуль к pam. Сам же код приложение
>>не изменится. В остальном (для примеров) достаточно обратить внимание на любой
>>мало-мальски популярный сетевой продукт.
>
>А можете посоветовать какой-нибудь продукт с минимальным, но достаточным количеством кода? -
>в длинных программах трудно выискивать.

да тот же passwd,login, кажись.., вся система аутентификации unixов держится на этом
просто смотрите в исходниках где числится #include <pam.h>, или кеак там у вас.
тот фалй и розбирайте, но правильней все таки к документации

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Как проверить пароль по /etc/shadow?"  
Сообщение от missKler email on 20-Фев-09, 13:57 
Как можно проверить пароль и ник?я создала себе почтовый ящик,захожу в чаты и т д пароль и ник не верные!Что посоветуете?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру