Introduction

You may need to run some operations at authentication, session opening or closing. Here is a PAM module I’ve found that allows this functionality.

Installation

Download the module from the Freshmeat project and extract it:

  wget http://freshmeat.net/redir/pam_script/22413/url_tgz/libpam-script_0.1.12.tar.gz
tar -xzvf libpam-script_0.1.12.tar.gz
  

Now install the dependencies:

  aptitude install libpam-dev gcc make
  

Now compile it:

  $ make
gcc -Wall -pedantic -fPIC -shared  -o pam_script.so pam_script.c
  

Now you just need to copy it:

  cp pam_script.so /lib/security
  

Configuration

PAM

Session

If you want to launch something with root permissions at session startup, edit the /etc/pam.d/common-session and add this line:

  session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required        pam_script.so runas=root onsessionopen=/etc/security/onsessionopen
session sufficient      pam_ldap.so
session required        pam_unix
  

After pam_script, you can configure:

  • runas: choose the user you want to run script (runas=root)
  • onsessionopen: this script will be launched on started session (onsessionopen=/etc/security/onsessionopen)
  • onsessionclose: this script will be launched on closed session (onsessionclose=/etc/security/onsessionclose)

Auth

You may also want to launch something at authentication:

  auth    required        pam_unix.so nullok_secure
auth     required pam_script.so onauth=/etc/security/onauth
  

Scripts

Just create the default scripts and add the necessary permissions:

  touch /etc/security/onsessionopen /etc/security/onsessionclose /etc/security/onauth
chmod 755 /etc/security/onsessionopen /etc/security/onsessionclose /etc/security/onauth
  

And add this minimum content:

  #!/bin/sh
  

Test & Debug

You can now test by adding for example “touch /tmp/test_ok” on the “onsessionopen” script. To have more details, please look at the logs:

  $ tail /var/log/auth.log
Jul 15 13:03:35 moonlight sshd[3777]: PAM-script: Real User is: pmavro
Jul 15 13:03:35 moonlight sshd[3777]: PAM-script: Command is:   /etc/security/onsessionopen
Jul 15 13:03:35 moonlight sshd[3777]: PAM-script: Executing uid:gid is: 0:0
  

All looks good :-)

Last updated 14 Mar 2010, 19:40 +0200. history