Есть модуль (pam_pkcs11), которому необязательно знать имя пользователя. Он маппит сертификат с токена в логин (например через GECOS). Вот код: 483 if ( is_spaced_str(user) ) { 484 /* 485 if provided user is null or empty extract and set user 486 name from certificate 487 */ 488 DBG("Empty login: try to deduce from certificate"); 489 user=find_user(x509); 490 if (!user) { ... 495 } else { 496 DBG1("certificate is valid and matches user %s",user); 497 /* try to set up PAM user entry with evaluated value */ 498 rv = pam_set_item(pamh, PAM_USER,(const void *)user); ... 505 chosen_cert = cert_list[i]; 506 break; /* end loop, as find user success */ 507 } 508 } else { Код выполняется, pam_set_item() успешно отрабатывает, этот модуль возвращает PAM_SUCCESS, только ни login, ни gdm пользователя не пускают. pam_authenticate() отвечает login'у что "User not known to underlying authentication module". system-auth выглядит так: auth [success=1 default=ignore] pam_pkcs11.so auth required pam_tcb.so shadow fork prefix=$2a$ count=8 nullok auth required pam_permit.so Тем не менее хотелось бы невозбранно достигнуть желаемого? -- Regards, Sir Raorn.