/
usr
/
share
/
doc
/
pam-devel
/
html
/
/usr/share/doc/pam-devel/html
mkdir
upload
Name
Size
Mode
Actions
adg-author.html
3098
0644
edit
dl
rm
adg-copyright.html
3624
0644
edit
dl
rm
adg-example.html
3676
0644
edit
dl
rm
adg-files.html
2239
0644
edit
dl
rm
adg-glossary.html
3286
0644
edit
dl
rm
adg-interface-by-app-expected.html
62472
0644
edit
dl
rm
adg-interface-of-app-expected.html
8457
0644
edit
dl
rm
adg-interface-programming-notes.html
2614
0644
edit
dl
rm
adg-interface.html
5019
0644
edit
dl
rm
adg-introduction-description.html
3373
0644
edit
dl
rm
adg-introduction-synopsis.html
2683
0644
edit
dl
rm
adg-introduction.html
2064
0644
edit
dl
rm
adg-libpam-functions.html
13449
0644
edit
dl
rm
adg-libpam_misc.html
3421
0644
edit
dl
rm
adg-overview.html
8357
0644
edit
dl
rm
adg-porting.html
4306
0644
edit
dl
rm
adg-security-conv-function.html
2346
0644
edit
dl
rm
adg-security-library-calls.html
3203
0644
edit
dl
rm
adg-security-resources.html
2903
0644
edit
dl
rm
adg-security-service-name.html
4535
0644
edit
dl
rm
adg-security-user-identity.html
5512
0644
edit
dl
rm
adg-security.html
3824
0644
edit
dl
rm
adg-see-also.html
2214
0644
edit
dl
rm
Linux-PAM_ADG.html
8613
0644
edit
dl
rm
Linux-PAM_MWG.html
8803
0644
edit
dl
rm
mwg-author.html
3075
0644
edit
dl
rm
mwg-copyright.html
3603
0644
edit
dl
rm
mwg-example.html
2005
0644
edit
dl
rm
mwg-expected-by-module-item.html
46457
0644
edit
dl
rm
mwg-expected-by-module-other.html
8352
0644
edit
dl
rm
mwg-expected-by-module.html
4117
0644
edit
dl
rm
mwg-expected-of-module-acct.html
6187
0644
edit
dl
rm
mwg-expected-of-module-auth.html
10968
0644
edit
dl
rm
mwg-expected-of-module-chauthtok.html
7977
0644
edit
dl
rm
mwg-expected-of-module-overview.html
6437
0644
edit
dl
rm
mwg-expected-of-module-session.html
7126
0644
edit
dl
rm
mwg-expected-of-module.html
4374
0644
edit
dl
rm
mwg-introduction-description.html
3971
0644
edit
dl
rm
mwg-introduction-synopsis.html
2028
0644
edit
dl
rm
mwg-introduction.html
2032
0644
edit
dl
rm
mwg-see-also.html
2231
0644
edit
dl
rm
mwg-see-options.html
2996
0644
edit
dl
rm
mwg-see-programming-libs.html
3015
0644
edit
dl
rm
mwg-see-programming-sec.html
9141
0644
edit
dl
rm
mwg-see-programming-syslog.html
4741
0644
edit
dl
rm
mwg-see-programming.html
3078
0644
edit
dl
rm
Edit:
/usr/share/doc/pam-devel/html/adg-example.html
(3676B)
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 8. An example application</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="Linux-PAM_ADG.html" title="The Linux-PAM Application Developers' Guide"><link rel="up" href="Linux-PAM_ADG.html" title="The Linux-PAM Application Developers' Guide"><link rel="prev" href="adg-glossary.html" title="Chapter 7. Glossary of PAM related terms"><link rel="next" href="adg-files.html" title="Chapter 9. Files"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. An example application</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="adg-glossary.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="adg-files.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="adg-example"></a>Chapter 8. An example application</h1></div></div></div><p> To get a flavor of the way a <span class="emphasis"><em>Linux-PAM</em></span> application is written we include the following example. It prompts the user for their password and indicates whether their account is valid on the standard output, its return code also indicates the success (<span class="returnvalue">0</span> for success; <span class="returnvalue">1</span> for failure). </p><pre class="programlisting"> /* This program was contributed by Shane Watts [modifications by AGM and kukuk] You need to add the following (or equivalent) to the /etc/pam.d/check_user file: # check authorization auth required pam_unix.so account required pam_unix.so */ #include <security/pam_appl.h> #include <security/pam_misc.h> #include <stdio.h> static struct pam_conv conv = { misc_conv, NULL }; int main(int argc, char *argv[]) { pam_handle_t *pamh=NULL; int retval; const char *user="nobody"; if(argc == 2) { user = argv[1]; } if(argc > 2) { fprintf(stderr, "Usage: check_user [username]\n"); exit(1); } retval = pam_start("check_user", user, &conv, &pamh); if (retval == PAM_SUCCESS) retval = pam_authenticate(pamh, 0); /* is user really user? */ if (retval == PAM_SUCCESS) retval = pam_acct_mgmt(pamh, 0); /* permitted access? */ /* This is where we have been authorized or not. */ if (retval == PAM_SUCCESS) { fprintf(stdout, "Authenticated\n"); } else { fprintf(stdout, "Not Authenticated\n"); } if (pam_end(pamh,retval) != PAM_SUCCESS) { /* close Linux-PAM */ pamh = NULL; fprintf(stderr, "check_user: failed to release authenticator\n"); exit(1); } return ( retval == PAM_SUCCESS ? 0:1 ); /* indicate success */ } </pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="adg-glossary.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="adg-files.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Glossary of PAM related terms </td><td width="20%" align="center"><a accesskey="h" href="Linux-PAM_ADG.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Files</td></tr></table></div></body></html>
Save
cmd:
run