pam_warn.c 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * pam_warn module
  3. *
  4. * Written by Andrew Morgan <morgan@linux.kernel.org> 1996/3/11
  5. */
  6. #include "config.h"
  7. #include <stdio.h>
  8. #include <unistd.h>
  9. #include <syslog.h>
  10. #include <stdarg.h>
  11. #include <security/pam_modules.h>
  12. #include <security/pam_ext.h>
  13. /* some syslogging */
  14. #define OBTAIN(item, value, default_value) do { \
  15. (void) pam_get_item(pamh, item, &value); \
  16. value = value ? value : default_value ; \
  17. } while (0)
  18. static void log_items(pam_handle_t *pamh, const char *function, int flags)
  19. {
  20. const void *service=NULL, *user=NULL, *terminal=NULL,
  21. *rhost=NULL, *ruser=NULL;
  22. OBTAIN(PAM_SERVICE, service, "<unknown>");
  23. OBTAIN(PAM_TTY, terminal, "<unknown>");
  24. OBTAIN(PAM_USER, user, "<unknown>");
  25. OBTAIN(PAM_RUSER, ruser, "<unknown>");
  26. OBTAIN(PAM_RHOST, rhost, "<unknown>");
  27. pam_syslog(pamh, LOG_NOTICE,
  28. "function=[%s] flags=%#x service=[%s] terminal=[%s] user=[%s]"
  29. " ruser=[%s] rhost=[%s]\n", function, flags,
  30. (const char *) service, (const char *) terminal,
  31. (const char *) user, (const char *) ruser,
  32. (const char *) rhost);
  33. }
  34. /* --- authentication management functions (only) --- */
  35. int pam_sm_authenticate(pam_handle_t *pamh, int flags,
  36. int argc UNUSED, const char **argv UNUSED)
  37. {
  38. log_items(pamh, __FUNCTION__, flags);
  39. return PAM_IGNORE;
  40. }
  41. int pam_sm_setcred(pam_handle_t *pamh, int flags,
  42. int argc UNUSED, const char **argv UNUSED)
  43. {
  44. log_items(pamh, __FUNCTION__, flags);
  45. return PAM_IGNORE;
  46. }
  47. /* password updating functions */
  48. int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
  49. int argc UNUSED, const char **argv UNUSED)
  50. {
  51. log_items(pamh, __FUNCTION__, flags);
  52. return PAM_IGNORE;
  53. }
  54. int
  55. pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
  56. int argc UNUSED, const char **argv UNUSED)
  57. {
  58. log_items(pamh, __FUNCTION__, flags);
  59. return PAM_IGNORE;
  60. }
  61. int
  62. pam_sm_open_session(pam_handle_t *pamh, int flags,
  63. int argc UNUSED, const char **argv UNUSED)
  64. {
  65. log_items(pamh, __FUNCTION__, flags);
  66. return PAM_IGNORE;
  67. }
  68. int
  69. pam_sm_close_session(pam_handle_t *pamh, int flags,
  70. int argc UNUSED, const char **argv UNUSED)
  71. {
  72. log_items(pamh, __FUNCTION__, flags);
  73. return PAM_IGNORE;
  74. }
  75. /* end of module definition */