Table of Contents
AIX Home Directory
Under normal circumstances you would use the PAM module pam_mkhomedir.so to create a home directory when it not exists and a user logins. This does not work using SSH because this is considered a security breach. This article is about the autocreation of a home directory when users login using SSH. Because the pam module doesn't work anymore we use the “make_home_dir” program from TrustSec.
Note: The recommendations used here are mostly from the readme, this readme was however created for linux so a few commands didn't work. The commands used here are for AIX.
Installation make_home_dir
The installation of make_home_dir on AIX is not so straight forward as hoped for. I had to perform these steps to get it working:
- System setup
- Modification make file
- Compile source
- Configure /etc/profile
System setup
Before the program can be installed you need to setup your system: Do the following, to setup your system: Add a group named 'home':
$ mkgroup home
Now make the parent of the home-directories writeable to this group:
$ chgrp home /home $ chmod g+w /home
AIX 6.1
Additionally, on AIX 6.1 you have to manually create the directory /usr/local/sbin:
mkdir /usr/local mkdir /usr/local/sbin
Modification make file
The makefile is created for linux and doesn't work out of the box on AIX. This is the original makefile:
# (c) Copyright 2003 -- Frank Kirschner <kirschner@trustsec.de> # # The install-dir of the binary BIN_DIR=/usr/local/sbin # The group, that make_home_dir should be started with GROUP=home # The parent-directory of all home-directories HOME_PARENT=/home SRC=make_home_dir.c FILE=make_home_dir DEST=$(BIN_DIR)/$(FILE) all: $(FILE) install: $(FILE) cp $(FILE) $(DEST) strip $(DEST) chgrp $(GROUP) $(DEST) chmod g+s $(DEST) setup: groupadd $(GROUP) chgrp $(GROUP) $(HOME_PARENT) chmod g+w $(HOME_PARENT) clean: rm -f $(FILE) $(FILE): $(SRC) gcc -Wall -o $@ $<
To make this file work on AIX you'll have to edit the last line:
gcc -Wall -o $@ $<
to:
gcc -Wall -o $@ $(SRC)
error
If you don't change the makefile you'll get this error:
root@ms-lpar04:/tmp/sft/make_home_dir-1.0>make gcc -Wall -o make_home_dir gcc: no input files make: The error code from the last command is 1.
Compile source
After this you can finally compile the source:
root@ms-lpar04:/tmp/sft/make_home_dir-1.0>make Target "all" is up to date. root@ms-lpar04:/tmp/sft/make_home_dir-1.0>make install cp make_home_dir /usr/local/sbin/make_home_dir strip /usr/local/sbin/make_home_dir chgrp home /usr/local/sbin/make_home_dir chmod g+s /usr/local/sbin/make_home_dir root@ms-lpar04:/tmp/sft/make_home_dir-1.0>ls COPYRIGHT Makefile README make_home_dir make_home_dir.c
Configure profile
Now you have to add some code to the /etc/profile script. The original code is again for linux and doesn't work completely on AIX. This is the original code:
if [ ! -d $HOME ] then logger Creating new home-directory $HOME /usr/local/sbin/make_home_dir cd $HOME cp -a /etc/skel/. $HOME/. echo Home directory created fi
To make it work on AIX change this line:
cp -a /etc/skel/. $HOME/.
to
cp /etc/skel/.[^\.]* $HOME/
NOTE: for this to work you'll have to change the default shell to /bin/bash. This is already been set for LUM enabled users in eDirectory.