Неинтерактивный login

Тема в разделе "WASM.UNIX", создана пользователем gongfu, 22 авг 2011.

  1. gongfu

    gongfu New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2010
    Сообщения:
    4
    Возможно ли сделать неинтерактивный login в систему через PAM. То есть по сути говоря ./test user pass, чтобы система говорила верный пасс или нет.
     
  2. blacktelecom

    blacktelecom New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2010
    Сообщения:
    235
    Да.

    Shadow.h
     
  3. gongfu

    gongfu New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2010
    Сообщения:
    4
    Нужно не имея привелегий суперпользователя. Это возможно?
     
  4. gongfu

    gongfu New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2010
    Сообщения:
    4
    Это код с kernel.org работает только для юсера из под которого запускается + пароль спрашивается в интерактивном режиме

    Код (Text):
    1. #include <security/pam_appl.h>
    2. #include <security/pam_misc.h>
    3. #include <stdio.h>
    4.  
    5. static struct pam_conv conv = {
    6.     misc_conv,
    7.     NULL
    8. };
    9.  
    10. int main(int argc, char *argv[])
    11. {
    12.     pam_handle_t *pamh=NULL;
    13.     int retval;
    14.     const char *user="nobody";
    15.  
    16.     if(argc == 2) {
    17.         user = argv[1];
    18.     }
    19.  
    20.     if(argc > 2) {
    21.         fprintf(stderr, "Usage: check_user [username]\n");
    22.         exit(1);
    23.     }
    24.  
    25.     retval = pam_start("check_user", user, &conv, &pamh);
    26.        
    27.     if (retval == PAM_SUCCESS)
    28.         retval = pam_authenticate(pamh, 0);    /* is user really user? */
    29.  
    30.     if (retval == PAM_SUCCESS)
    31.         retval = pam_acct_mgmt(pamh, 0);       /* permitted access? */
    32.  
    33.     /* This is where we have been authorized or not. */
    34.  
    35.     if (retval == PAM_SUCCESS) {
    36.         fprintf(stdout, "Authenticated\n");
    37.     } else {
    38.         fprintf(stdout, "Not Authenticated\n");
    39.     }
    40.  
    41.     if (pam_end(pamh,retval) != PAM_SUCCESS) {     /* close Linux-PAM */
    42.         pamh = NULL;
    43.         fprintf(stderr, "check_user: failed to release authenticator\n");
    44.         exit(1);
    45.     }
    46.  
    47.     return ( retval == PAM_SUCCESS ? 0:1 );       /* indicate success */
    48. }
    Можно ли написать для всех юсеров и без интерактива?
     
  5. gongfu

    gongfu New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2010
    Сообщения:
    4
    Я так понимаю при старте /bin/login запущен от рута и он даст залогиниться любому ( через PAM ), а уже залогиневшись, такое ( проверить валидность пароля произвольного юсера ) можно только через суидный /bin/su. Получается такое можно реализовать только через каналы общения с su ? Или есть иные пути решения? Есть у кого-нить наработки по взаимодействию с интерактивнымы каналами общения?
     
  6. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    gongfu
    Нет. Так или иначе придётся задействовать рутовские права. Если ruid процесса не 0, то есть процесс запущен не рутом, то этот процесс не может изменить свой euid, за исключением той ситуации, когда процесс suid'ный. Если же процесс suid'ный, то он может изменить euid на uid владельца файла. Рутовский суидный файл, таким образом, позволяет не-руту запустить процесс, который сменит euid на 0, после чего сможет использовать seteuid/setruid произвольным образом.

    Я где-то что-то слышал про linux без suid'а, но слышал лишь краем уха и не вникал как такое может быть. И я не уверен что донёсшиеся до меня отголоски я понял правильно.

    Если делать через su, то скорее всего втупую через пайпы не выйдет. Я вроде пробовал недавно из скрипта, и по-моему su отказался работать не на терминале. Это можно обойти, и в общем-то несложно. Псевдотерминалы должны помочь.
     
  7. act

    act New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2010
    Сообщения:
    8
    capabilities / caps
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    act
    И что мне с этим делать? Перевод этих слов на русский мне ни о чём не говорит. Если их забить в гугл, то я думаю тоже не узнаю ничего нового по теме.