diff options
Diffstat (limited to 'modules/pam_echo')
-rw-r--r-- | modules/pam_echo/.cvsignore | 6 | ||||
-rw-r--r-- | modules/pam_echo/Makefile.am | 31 | ||||
-rw-r--r-- | modules/pam_echo/README | 50 | ||||
-rw-r--r-- | modules/pam_echo/README.xml | 36 | ||||
-rw-r--r-- | modules/pam_echo/pam_echo.8 | 88 | ||||
-rw-r--r-- | modules/pam_echo/pam_echo.8.xml | 168 | ||||
-rw-r--r-- | modules/pam_echo/pam_echo.c | 269 | ||||
-rwxr-xr-x | modules/pam_echo/tst-pam_echo | 2 |
8 files changed, 0 insertions, 650 deletions
diff --git a/modules/pam_echo/.cvsignore b/modules/pam_echo/.cvsignore deleted file mode 100644 index 9fb98574..00000000 --- a/modules/pam_echo/.cvsignore +++ /dev/null @@ -1,6 +0,0 @@ -*.la -*.lo -.deps -.libs -Makefile -Makefile.in diff --git a/modules/pam_echo/Makefile.am b/modules/pam_echo/Makefile.am deleted file mode 100644 index 40415c7b..00000000 --- a/modules/pam_echo/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -# -# Copyright (c) 2005, 2006 Thorsten Kukuk <kukuk@thkukuk.de> -# - -CLEANFILES = *~ - -EXTRA_DIST = README $(MANS) $(XMLS) tst-pam_echo - -man_MANS = pam_echo.8 - -XMLS = README.xml pam_echo.8.xml - -securelibdir = $(SECUREDIR) -secureconfdir = $(SCONFIGDIR) - -AM_CFLAGS = -I$(top_srcdir)/libpam/include -I$(top_srcdir)/libpamc/include -AM_LDFLAGS = -no-undefined -avoid-version -module \ - -L$(top_builddir)/libpam -lpam -if HAVE_VERSIONING - AM_LDFLAGS += -Wl,--version-script=$(srcdir)/../modules.map -endif - -securelib_LTLIBRARIES = pam_echo.la - -if ENABLE_REGENERATE_MAN -noinst_DATA = README -README: pam_echo.8.xml --include $(top_srcdir)/Make.xml.rules -endif - -TESTS = tst-pam_echo diff --git a/modules/pam_echo/README b/modules/pam_echo/README deleted file mode 100644 index fca26b77..00000000 --- a/modules/pam_echo/README +++ /dev/null @@ -1,50 +0,0 @@ -pam_echo — PAM module for printing text messages - -━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - -DESCRIPTION - -The pam_echo PAM module is for printing text messages to inform user about -special things. Sequences starting with the % character are interpreted in the -following way: - -%H - - The name of the remote host (PAM_RHOST). - -%h - - The name of the local host. - -%s - - The service name (PAM_SERVICE). - -%t - - The name of the controlling terminal (PAM_TTY). - -%U - - The remote user name (PAM_RUSER). - -%u - - The local user name (PAM_USER). - -All other sequences beginning with % expands to the characters following the % -character. - -EXAMPLES - -For an example of the use of this module, we show how it may be used to print -informations about good passwords: - -password optional pam_echo.so file=/usr/share/doc/good-password.txt -password required pam_unix.so - - -AUTHOR - -Thorsten Kukuk <kukuk@thkukuk.de> - diff --git a/modules/pam_echo/README.xml b/modules/pam_echo/README.xml deleted file mode 100644 index b1556e38..00000000 --- a/modules/pam_echo/README.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding='UTF-8'?> -<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" -"http://www.docbook.org/xml/4.3/docbookx.dtd" -[ -<!-- -<!ENTITY pamaccess SYSTEM "pam_echo.8.xml"> ---> -]> - -<article> - - <articleinfo> - - <title> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="pam_echo.8.xml" xpointer='xpointer(//refnamediv[@id = "pam_echo-name"]/*)'/> - </title> - - </articleinfo> - - <section> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="pam_echo.8.xml" xpointer='xpointer(//refsect1[@id = "pam_echo-description"]/*)'/> - </section> - - <section> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="pam_echo.8.xml" xpointer='xpointer(//refsect1[@id = "pam_echo-examples"]/*)'/> - </section> - - <section> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="pam_echo.8.xml" xpointer='xpointer(//refsect1[@id = "pam_echo-author"]/*)'/> - </section> - -</article> diff --git a/modules/pam_echo/pam_echo.8 b/modules/pam_echo/pam_echo.8 deleted file mode 100644 index 423a8e1b..00000000 --- a/modules/pam_echo/pam_echo.8 +++ /dev/null @@ -1,88 +0,0 @@ -.\" Title: pam_echo -.\" Author: -.\" Generator: DocBook XSL Stylesheets v1.70.1 <http://docbook.sf.net/> -.\" Date: 06/21/2006 -.\" Manual: Linux\-PAM Manual -.\" Source: Linux\-PAM Manual -.\" -.TH "PAM_ECHO" "8" "06/21/2006" "Linux\-PAM Manual" "Linux\-PAM Manual" -.\" disable hyphenation -.nh -.\" disable justification (adjust text to left margin only) -.ad l -.SH "NAME" -pam_echo \- PAM module for printing text messages -.SH "SYNOPSIS" -.HP 12 -\fBpam_echo.so\fR [file=\fI/path/message\fR] -.SH "DESCRIPTION" -.PP -The -\fIpam_echo\fR -PAM module is for printing text messages to inform user about special things. Sequences starting with the -\fI%\fR -character are interpreted in the following way: -.TP 3n -\fI%H\fR -The name of the remote host (PAM_RHOST). -.TP 3n -\fB%h\fR -The name of the local host. -.TP 3n -\fI%s\fR -The service name (PAM_SERVICE). -.TP 3n -\fI%t\fR -The name of the controlling terminal (PAM_TTY). -.TP 3n -\fI%U\fR -The remote user name (PAM_RUSER). -.TP 3n -\fI%u\fR -The local user name (PAM_USER). -.PP -All other sequences beginning with -\fI%\fR -expands to the characters following the -\fI%\fR -character. -.SH "OPTIONS" -.TP 3n -\fBfile=\fR\fB\fI/path/message\fR\fR -The content of the file -\fI/path/message\fR -will be printed with the PAM conversion function as PAM_TEXT_INFO. -.SH "MODULE SERVICES PROVIDED" -.PP -All services are supported. -.SH "RETURN VALUES" -.TP 3n -PAM_BUF_ERR -Memory buffer error. -.TP 3n -PAM_SUCCESS -Message was successful printed. -.TP 3n -PAM_IGNORE -PAM_SILENT flag was given or message file does not exist, no message printed. -.SH "EXAMPLES" -.PP -For an example of the use of this module, we show how it may be used to print informations about good passwords: -.sp -.RS 3n -.nf -password optional pam_echo.so file=/usr/share/doc/good\-password.txt -password required pam_unix.so - -.fi -.RE -.sp -.SH "SEE ALSO" -.PP - -\fBpam.conf\fR(8), -\fBpam.d\fR(8), -\fBpam\fR(8) -.SH "AUTHOR" -.PP -Thorsten Kukuk <kukuk@thkukuk.de> diff --git a/modules/pam_echo/pam_echo.8.xml b/modules/pam_echo/pam_echo.8.xml deleted file mode 100644 index 4a495195..00000000 --- a/modules/pam_echo/pam_echo.8.xml +++ /dev/null @@ -1,168 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" - "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> - -<refentry id='pam_echo'> - <refmeta> - <refentrytitle>pam_echo</refentrytitle> - <manvolnum>8</manvolnum> - <refmiscinfo class='setdesc'>Linux-PAM Manual</refmiscinfo> - </refmeta> - - <refnamediv id='pam_echo-name'> - <refname>pam_echo</refname> - <refpurpose>PAM module for printing text messages</refpurpose> - </refnamediv> - -<!-- body begins here --> - - <refsynopsisdiv> - <cmdsynopsis id="pam_echo-cmdsynopsis"> - <command>pam_echo.so</command> - <arg choice="opt"> - file=<replaceable>/path/message</replaceable> - </arg> - </cmdsynopsis> - </refsynopsisdiv> - - <refsect1 id='pam_echo-description'> - <title>DESCRIPTION</title> - <para> - The <emphasis>pam_echo</emphasis> PAM module is for printing - text messages to inform user about special things. Sequences - starting with the <emphasis>%</emphasis> character are - interpreted in the following way: - </para> - <variablelist> - <varlistentry> - <term><emphasis>%H</emphasis></term> - <listitem> - <para>The name of the remote host (PAM_RHOST).</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis remap='B'>%h</emphasis></term> - <listitem> - <para>The name of the local host.</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis>%s</emphasis></term> - <listitem> - <para>The service name (PAM_SERVICE).</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis>%t</emphasis></term> - <listitem> - <para>The name of the controlling terminal (PAM_TTY).</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis>%U</emphasis></term> - <listitem> - <para>The remote user name (PAM_RUSER).</para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis>%u</emphasis></term> - <listitem> - <para>The local user name (PAM_USER).</para> - </listitem> - </varlistentry> - </variablelist> - - <para> - All other sequences beginning with <emphasis>%</emphasis> - expands to the characters following the <emphasis>%</emphasis> - character. - </para> - </refsect1> - - <refsect1 id='pam_echo-options'> - <title>OPTIONS</title> - <variablelist> - <varlistentry> - <term> - <option>file=<replaceable>/path/message</replaceable></option> - </term> - <listitem> - <para> - The content of the file <filename>/path/message</filename> - will be printed with the PAM conversion function as PAM_TEXT_INFO. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1 id="pam_echo-services"> - <title>MODULE SERVICES PROVIDED</title> - <para> - All services are supported. - </para> - </refsect1> - - - <refsect1 id="pam_echo-return_values"> - <title>RETURN VALUES</title> - <variablelist> - <varlistentry> - <term>PAM_BUF_ERR</term> - <listitem> - <para> - Memory buffer error. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>PAM_SUCCESS</term> - <listitem> - <para> - Message was successful printed. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>PAM_IGNORE</term> - <listitem> - <para> - PAM_SILENT flag was given or message file does not - exist, no message printed. - </para> - </listitem> - </varlistentry> - </variablelist> - </refsect1> - - <refsect1 id='pam_echo-examples'> - <title>EXAMPLES</title> - <para> - For an example of the use of this module, we show how it may be - used to print informations about good passwords: - <programlisting> -password optional pam_echo.so file=/usr/share/doc/good-password.txt -password required pam_unix.so - </programlisting> - </para> - </refsect1> - - - <refsect1 id='pam_echo-see_also'><title>SEE ALSO</title> - <para> - <citerefentry> - <refentrytitle>pam.conf</refentrytitle><manvolnum>8</manvolnum> - </citerefentry>, - <citerefentry> - <refentrytitle>pam.d</refentrytitle><manvolnum>8</manvolnum> - </citerefentry>, - <citerefentry> - <refentrytitle>pam</refentrytitle><manvolnum>8</manvolnum> - </citerefentry></para> - </refsect1> - - <refsect1 id='pam_echo-author'> - <title>AUTHOR</title> - <para>Thorsten Kukuk <kukuk@thkukuk.de></para> - </refsect1> -</refentry> diff --git a/modules/pam_echo/pam_echo.c b/modules/pam_echo/pam_echo.c deleted file mode 100644 index 31ebca22..00000000 --- a/modules/pam_echo/pam_echo.c +++ /dev/null @@ -1,269 +0,0 @@ -/* - * Copyright (c) 2005, 2006 Thorsten Kukuk <kukuk@suse.de> - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * ALTERNATIVELY, this product may be distributed under the terms of - * the GNU Public License, in which case the provisions of the GPL are - * required INSTEAD OF the above restrictions. (This clause is - * necessary due to a potential bad interaction between the GPL and - * the restrictions contained in a BSD-style copyright.) - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#if defined(HAVE_CONFIG_H) -#include "config.h" -#endif - -#include <errno.h> -#include <stdio.h> -#include <fcntl.h> -#include <string.h> -#include <stdlib.h> -#include <unistd.h> -#include <limits.h> -#include <syslog.h> -#include <sys/types.h> -#include <sys/stat.h> - -#ifndef HOST_NAME_MAX -#define HOST_NAME_MAX 255 -#endif - -#define PAM_SM_ACCOUNT -#define PAM_SM_AUTH -#define PAM_SM_PASSWORD -#define PAM_SM_SESSION - -#include <security/pam_modules.h> -#include <security/pam_modutil.h> -#include <security/_pam_macros.h> -#include <security/pam_ext.h> - -static int -replace_and_print (pam_handle_t *pamh, const char *mesg) -{ - char *output; - size_t length = strlen (mesg) + PAM_MAX_MSG_SIZE; - char myhostname[HOST_NAME_MAX+1]; - const void *str = NULL; - const char *p, *q; - int item; - size_t len; - - output = malloc (length); - if (output == NULL) - { - pam_syslog (pamh, LOG_ERR, "running out of memory"); - return PAM_BUF_ERR; - } - - for (p = mesg, len = 0; *p != '\0' && len < length - 1; ++p) - { - if (*p != '%' || p[1] == '\0') - { - output[len++] = *p; - continue; - } - switch (*++p) - { - case 'H': - item = PAM_RHOST; - break; - case 'h': - item = -2; /* aka PAM_LOCALHOST */ - break; - case 's': - item = PAM_SERVICE; - break; - case 't': - item = PAM_TTY; - break; - case 'U': - item = PAM_RUSER; - break; - case 'u': - item = PAM_USER; - break; - default: - output[len++] = *p; - continue; - } - if (item == -2) - { - if (gethostname (myhostname, sizeof (myhostname)) == -1) - str = NULL; - else - str = &myhostname; - } - else - pam_get_item (pamh, item, &str); - if (str == NULL) - str = "(null)"; - for (q = str; *q != '\0' && len < length - 1; ++q) - output[len++] = *q; - } - output[len] = '\0'; - - pam_info (pamh, "%s", output); - free (output); - - return PAM_SUCCESS; -} - -static int -pam_echo (pam_handle_t *pamh, int flags, int argc, const char **argv) -{ - int fd; - int orig_argc = argc; - const char **orig_argv = argv; - const char *file = NULL; - int retval; - - if (flags & PAM_SILENT) - return PAM_IGNORE; - - for (; argc-- > 0; ++argv) - { - if (!strncmp (*argv, "file=", 5)) - file = (5 + *argv); - } - - /* No file= option, use argument for output. */ - if (file == NULL || file[0] == '\0') - { - char msg[PAM_MAX_MSG_SIZE]; - const char *p; - int i; - size_t len; - - for (i = 0, len = 0; i < orig_argc && len < sizeof (msg) - 1; ++i) - { - if (i > 0) - msg[len++] = ' '; - for (p = orig_argv[i]; *p != '\0' && len < sizeof(msg) - 1; ++p) - msg[len++] = *p; - } - msg[len] = '\0'; - - retval = replace_and_print (pamh, msg); - } - else if ((fd = open (file, O_RDONLY, 0)) >= 0) - { - char *mtmp = NULL; - struct stat st; - - /* load file into message buffer. */ - if ((fstat (fd, &st) < 0) || !st.st_size) - return PAM_IGNORE; - - mtmp = malloc (st.st_size + 1); - if (!mtmp) - return PAM_BUF_ERR; - - if (pam_modutil_read (fd, mtmp, st.st_size) == -1) - { - pam_syslog (pamh, LOG_ERR, "Error while reading %s: %m", file); - free (mtmp); - return PAM_IGNORE; - } - - if (mtmp[st.st_size - 1] == '\n') - mtmp[st.st_size - 1] = '\0'; - else - mtmp[st.st_size] = '\0'; - - close (fd); - retval = replace_and_print (pamh, mtmp); - free (mtmp); - } - else - { - pam_syslog (pamh, LOG_ERR, "Cannot open %s: %m", file); - retval = PAM_IGNORE; - } - return retval; -} - -int -pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, - const char **argv) -{ - return pam_echo (pamh, flags, argc, argv); -} - -int -pam_sm_setcred (pam_handle_t *pamh UNUSED, int flags UNUSED, - int argc UNUSED, const char **argv UNUSED) -{ - return PAM_IGNORE; -} - -int -pam_sm_acct_mgmt (pam_handle_t *pamh, int flags, int argc, - const char **argv) -{ - return pam_echo (pamh, flags, argc, argv); -} - -int -pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, - const char **argv) -{ - return pam_echo (pamh, flags, argc, argv); -} - -int -pam_sm_close_session (pam_handle_t *pamh UNUSED, int flags UNUSED, - int argc UNUSED, const char **argv UNUSED) -{ - return PAM_IGNORE; -} - -int -pam_sm_chauthtok (pam_handle_t *pamh, int flags, int argc, - const char **argv) -{ - if (flags & PAM_PRELIM_CHECK) - return pam_echo (pamh, flags, argc, argv); - else - return PAM_IGNORE; -} - -#ifdef PAM_STATIC - -/* static module data */ - -struct pam_module _pam_echo_modstruct = { - "pam_echo", - pam_sm_authenticate, - pam_sm_setcred, - pam_sm_acct_mgmt, - pam_sm_open_session, - pam_sm_close_session, - pam_sm_chauthtok, -}; - -#endif diff --git a/modules/pam_echo/tst-pam_echo b/modules/pam_echo/tst-pam_echo deleted file mode 100755 index 483a2c23..00000000 --- a/modules/pam_echo/tst-pam_echo +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -../../tests/tst-dlopen .libs/pam_echo.so |