5.1. 提供的功能

5.1.1. 基于文本的对话功能

#include <security/pam_misc.h> 
   int misc_conv( 
   num_msg,  
   msgm,  
   response,  
   appdata_ptr); 
 int num_msg; 
 const struct pam_message **msgm; 
 struct pam_response **response; 
 void *appdata_ptr; 

5.1.1.1. DESCRIPTION

misc_conv函数是 libpam_misc 的一部分,而不是标准 libpam 库的一部分。该功能将提示用户适当的 Comments,并按照身份验证模块的指示获取适当的 Importing。

除了简单地插入适当的 pam_conv(3)外,此函数还提供了一些超时功能。该函数导出五个变量,应用程序程序员可以使用这些变量来限制此对话函数 await 用户键入内容所花费的时间。这五个变量如下:

  • time_t pam_misc_conv_warn_time;

    • 该变量包含* time (由 time(2)返回),应首先警告用户时钟正在滴答。默认情况下,其值为 0,表示不会发出此类警告。该应用程序可以将其值设置为将来的某个时间,但这应该在将控制权传递给 Linux-PAM *库之前完成。
  • const char * pam_misc_conv_warn_line;

    • pam_misc_conv_warn_time结合使用,此变量是指向字符串的指针,当需要警告用户超时即将到来时,将显示该字符串。它的默认值是“ ...时间用完了...”的翻译版本,但是可以在将控制权传递给* Linux-PAM *之前由应用程序进行更改。
  • time_t pam_misc_conv_die_time;

    • 此变量包含将超时的* time (由 time(2)返回)。默认情况下,它的值为 0,表示对话功能不会超时。该应用程序可以将其值设置为将来的某个时间,但这应该在将控制权传递给 Linux-PAM *库之前完成。
  • const char * pam_misc_conv_die_line;

    • pam_misc_conv_die_time结合使用,此变量是指向对话超时时将显示的字符串的指针。它的默认值是“ ...抱歉,您的时间到了!”的翻译版本,但是可以在将控制权传递给* Linux-PAM *之前由应用程序进行更改。
  • int pam_misc_conv_died;

    • 从* Linux-PAM *库返回后,此变量的值指示对话是否超时。值 1 表示发生超时。

以下两个功能指针可用于支持对话功能中的二进制提示。它们已针对 libpamc 库的当前版本进行了优化,并且会随时更改。

  • int (*pam_binary_handler_fn)(void * appdata,pamc_bp_t * prompt_p);

    • 该函数指针被初始化为 NULL,但可以用提供机器(机器)(隐藏)消息交换的函数来填充。它旨在与隐藏的身份验证协议(例如 RSA 或 Diffie-Hellman 密钥交换)一起使用。 (这仍在开发中.)
  • int (*pam_binary_handler_free)(void * appdata,pamc_bp_t * delete_me);

    • 该函数指针被初始化为PAM_BP_RENEW(delete_me, 0, 0),但可以根据应用程序的需要进行重新定义。

5.1.2. 将环境复制到 PAM 的环境

#include <security/pam_misc.h> 
   int pam_misc_paste_env( 
   pamh,  
   user); 
 pam_handle_t *pamh; 
 const char * const *user; 

5.1.2.1. DESCRIPTION

此函数获取提供的环境指针列表,并将其内容“上载”到 PAM 环境。 PAM_SUCCESS 表示成功。

5.1.3. 解放本地保存的环境

#include <security/pam_misc.h> 
   int pam_misc_drop_env( 
   env); 
 char **env; 

5.1.3.1. DESCRIPTION

定义此函数是对 pam_getenvlist(3)函数的补充。它将与* env 关联的内存,与 0 overwrite * * free()释放之前的所有内存释放。

5.1.4. BSD 之类的 PAM 环境变量设置

#include <security/pam_misc.h> 
   int pam_misc_setenv( 
   pamh,  
   name,  
   value,  
   readonly); 
 pam_handle_t *pamh; 
 const char *name; 
 const char *value; 
 int readonly; 

5.1.4.1. DESCRIPTION

该函数执行与 pam_putenv(3)等效的任务,但是其语法更像是 BSD 样式函数。 setenv()。 * name value 与'='串联以形成 name = value 并传递给pam_putenv()。但是,如果已经设置了 PAM 变量,则仅当最后一个参数 readonly *为零时才应用替换。