Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компиляция програмы для PAM 
:(
    Опции темы
Elyad
Дата 5.9.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 2.8.2006

Репутация: нет
Всего: нет



Работаю с ОС Linux, изучаю в данный момент PAM. Составила простенькую программу и пытаюсь откомпилировать ее. Если кто знает, помогите разобраться в тех ошибках которые она выдает при компиляции.
Для начала привожу текст самой программы

#include <security/pam_appl.h>
#include <unistd.h>
#include <pwd.h>
#include <sys/types.h>
#include <stdio.h>


int su_conv(int num_msg, const struct pam_message **mes, struct pam_response **resp, void *appdata_ptr)
{
    struct pam_message *m=*mes;
    struct pam_response *r=*resp;

    while (num_msg--)
    {
     switch(m->msg_style)
     {
      case  PAM_PROMPT_ECHO_ON :  fprintf(stdout,"%s",m->msg);
                                  r->resp=(char *)malloc(PAM_MAX_RESP_SIZE);
                                  fgets(r->resp,PAM_MAX_RESP_SIZE-1,stdin);
                                  m++; r++;
                                  break;
      case PAM_PROMPT_ECHO_OFF:   r->resp=getpass(m->msg);
                                  m++; r++;
                                  break;
      case PAM_ERROR_MSG :        fprintf(stderr,"%s",m->msg);
                                  m++; r++;
                                  break;
      case PAM_TEXT_INFO :        fprintf(stdout,"%s",m->msg);
                                  m++; r++;
                                  break;
      default :                   break;
        }
    }
      return PAM_SUCCESS;
}
static struct  pam_conv conv={su_conv, NULL};

int main(int argc, char *argv[])
{
    int ret;
    pam_handle_t *pamh;
    struct passwd *pwd;

    ret=pam_start("su",argv[1],&conv,&pamh);
    if (ret==PAM_SUCCESS)  ret=pam_authenticate(pamh,0);
    if (ret==PAM_SUCCESS)  ret=pam_acct_mgmt(pamh,0);
    if (ret==PAM_SUCCESS)
    if  ((pwd=getpwnam(argv[1]))!=NULL)  setuid(pwd->pw_uid);
    else
             {           pam_end(pamh,PAM_AUTH_ERR);
                         exit(1);
             }
     pam_end(pamh,PAM_SUCCESS);
     return (ret==PAM_SUCCESS?0:1);
}

При этом при компиляции получаю следующее

my_pam.c: In function `su_conv':
my_pam.c:10: warning: initialization discards qualifiers from pointer target type
/tmp/ccXRTMg0.o(.text+0x171): In function `main':
: undefined reference to `pam_start'
/tmp/ccXRTMg0.o(.text+0x18a): In function `main':
: undefined reference to `pam_authenticate'
/tmp/ccXRTMg0.o(.text+0x1a3): In function `main':
: undefined reference to `pam_acct_mgmt'
/tmp/ccXRTMg0.o(.text+0x1eb): In function `main':
: undefined reference to `pam_end'
/tmp/ccXRTMg0.o(.text+0x205): In function `main':
: undefined reference to `pam_end'
collect2: ld returned 1 exit status

В чем дело? Если кто знает пишите.  smile 


                                                                                




PM MAIL   Вверх
gruy
Дата 6.9.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 4.6.2004

Репутация: нет
Всего: 3



При сборке библиотеку pam подключала -lpam ?

Это сообщение отредактировал(а) gruy - 6.9.2006, 12:56
PM MAIL   Вверх
bilbobagginz
Дата 9.9.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 4
Всего: 317



нужны ответы на:
  • какая команда сборки использовалась ?
  • где установлена библиотека libpam.so.*.*?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.