3 changed files with 381 additions and 0 deletions
@ -0,0 +1,167 @@
|
||||
## |
||||
## pam.spec -- OpenPKG RPM Specification |
||||
## Copyright (c) 2000-2002 Cable & Wireless Deutschland GmbH |
||||
## Copyright (c) 2000-2002 The OpenPKG Project <http://www.openpkg.org/> |
||||
## Copyright (c) 2000-2002 Ralf S. Engelschall <rse@engelschall.com> |
||||
## |
||||
## Permission to use, copy, modify, and distribute this software for |
||||
## any purpose with or without fee is hereby granted, provided that |
||||
## the above copyright notice and this permission notice appear in all |
||||
## copies. |
||||
## |
||||
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
||||
## CONTRIBUTORS 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. |
||||
## |
||||
|
||||
# package information |
||||
Name: pam |
||||
Summary: Information Resource for PAM |
||||
URL: - |
||||
Vendor: The OpenPKG Project |
||||
Packager: The OpenPKG Project |
||||
Distribution: OpenPKG [EXP] |
||||
Group: Meta |
||||
License: PD |
||||
Version: 20011228 |
||||
Release: 20020206 |
||||
|
||||
# list of sources |
||||
Source0: pamtool |
||||
Source1: rc.pam |
||||
|
||||
# build information |
||||
Prefix: %{l_prefix} |
||||
BuildRoot: %{l_buildroot} |
||||
BuildPreReq: OpenPKG, openpkg >= 20020206 |
||||
PreReq: OpenPKG, openpkg >= 20020206 |
||||
AutoReq: no |
||||
AutoReqProv: no |
||||
Provides: X11 |
||||
|
||||
%description |
||||
This is the information resource package for PAM. |
||||
|
||||
%prep |
||||
|
||||
%build |
||||
|
||||
%install |
||||
rm -rf $RPM_BUILD_ROOT |
||||
|
||||
pam_cfgloc="" |
||||
pam_modpfx="" |
||||
pam_incdir="" |
||||
pam_libdir="" |
||||
|
||||
# search for configuration location |
||||
for cfgloc in \ |
||||
/etc/pam.d \ |
||||
/etc/pam.conf \ |
||||
; do |
||||
if [ -f $cfgloc -o -d $cfgloc ]; then |
||||
pam_cfgloc="$cfgloc" |
||||
break |
||||
fi |
||||
done |
||||
|
||||
# search for module prefix |
||||
if [ -d $pam_cfgloc ]; then |
||||
mod=`cat $pam_cfgloc/* 2>/dev/null | grep '^#*[ ]*other' | head -1 | awk '{ print $3; }'` |
||||
elif [ -f $pam_cfgloc ]; then |
||||
mod=`cat $pam_cfgloc 2>/dev/null | grep '^#*[ ]*other' | head -1 | awk '{ print $4; }'` |
||||
else |
||||
mod="" |
||||
fi |
||||
case $mod in |
||||
pam_* ) pam_modpfx="" ;; |
||||
/*/pam_* ) pam_modpfx=`echo $mod | sed 's;^\(/.*/\)pam_[^/]*$;\1;'` ;; |
||||
esac |
||||
|
||||
# search for include directory |
||||
for incdir in \ |
||||
/usr/include \ |
||||
/usr/local/include \ |
||||
/opt/include \ |
||||
; do |
||||
if [ -f "$incdir/security/pam_appl.h" ]; then |
||||
pam_incdir="$incdir" |
||||
break |
||||
fi |
||||
done |
||||
|
||||
# search for library directory |
||||
for libdir in \ |
||||
/lib \ |
||||
/usr/lib \ |
||||
/usr/local/lib \ |
||||
/opt/lib \ |
||||
; do |
||||
for ext in a so sl; do |
||||
if [ -f "$libdir/libpam.$ext" ]; then |
||||
pam_libdir="$libdir" |
||||
break |
||||
fi |
||||
done |
||||
if [ ".$pam_libdir" != . ]; then |
||||
break |
||||
fi |
||||
done |
||||
|
||||
# make sure everything was found |
||||
if [ ".$pam_cfgloc" = . ] ||\ |
||||
[ ".$pam_incdir" = . ] ||\ |
||||
[ ".$pam_libdir" = . ]; then |
||||
echo "************************************************************" |
||||
echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" |
||||
echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" |
||||
echo "**" |
||||
echo "** We found out:" |
||||
echo "** PAM Config Location: \"${pam_cfgloc}\"" |
||||
echo "** PAM Module Prefix: \"${pam_modpfx}\"" |
||||
echo "** PAM Include Directory: \"${pam_incdir}\"" |
||||
echo "** PAM Library Directory: \"${pam_libdir}\"" |
||||
echo "**" |
||||
echo "** Unfortunately, some information is missing here." |
||||
echo "**" |
||||
echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" |
||||
echo "** ERROR: SOME PAM INFORMATION COULD NOT BE DETERMINED!!" |
||||
echo "************************************************************" |
||||
exit 1 |
||||
fi |
||||
|
||||
# install PAM tool |
||||
%{l_shtool} mkdir -f -p -m 755 \ |
||||
$RPM_BUILD_ROOT%{l_prefix}/sbin |
||||
%{l_shtool} install -c -m 755 \ |
||||
-e 's;@l_prefix@;%{l_prefix};g' \ |
||||
-e 's;@l_target@;%{l_target};g' \ |
||||
%{SOURCE pamtool} $RPM_BUILD_ROOT%{l_prefix}/sbin/ |
||||
|
||||
# install rc file |
||||
%{l_shtool} mkdir -f -p -m 755 \ |
||||
$RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ |
||||
%{l_shtool} install -c -m 755 \ |
||||
-e 's;@l_prefix@;%{l_prefix};g' \ |
||||
-e "s;@pam_cfgloc@;${pam_cfgloc};g" \ |
||||
-e "s;@pam_modpfx@;${pam_modpfx};g" \ |
||||
-e "s;@pam_incdir@;${pam_incdir};g" \ |
||||
-e "s;@pam_libdir@;${pam_libdir};g" \ |
||||
%{SOURCE rc.pam} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ |
||||
|
||||
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} |
||||
|
||||
%files -f files |
||||
|
||||
%clean |
||||
rm -rf $RPM_BUILD_ROOT |
||||
|
@ -0,0 +1,195 @@
|
||||
#!/bin/sh |
||||
## |
||||
## pamtool -- PAM Auxiliary Tool |
||||
## Copyright (c) 2000-2002 Cable & Wireless Deutschland GmbH |
||||
## Copyright (c) 2000-2002 The OpenPKG Project <http://www.openpkg.org/> |
||||
## Copyright (c) 2000-2002 Ralf S. Engelschall <rse@engelschall.com> |
||||
## |
||||
## Permission to use, copy, modify, and distribute this software for |
||||
## any purpose with or without fee is hereby granted, provided that |
||||
## the above copyright notice and this permission notice appear in all |
||||
## copies. |
||||
## |
||||
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
||||
## CONTRIBUTORS 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. |
||||
## |
||||
|
||||
# program name, version and date |
||||
progname="pamtool" |
||||
progvers="0.9.0" |
||||
progdate="11-Mar-2002" |
||||
|
||||
# the OpenPKG instance information |
||||
l_prefix="@l_prefix@" |
||||
l_target="@l_target@" |
||||
|
||||
# default parameters |
||||
verbose=no |
||||
help=no |
||||
add=no |
||||
remove=no |
||||
smart=no |
||||
name="" |
||||
id="" |
||||
|
||||
# iterate over argument line |
||||
while [ $# -gt 0 ]; do |
||||
opt=$1 |
||||
case $opt in |
||||
-*=*) arg=`echo "$opt" | sed 's/^[-_a-zA-Z0-9]*=//'` ;; |
||||
*) arg='' ;; |
||||
esac |
||||
case $opt in |
||||
-v|--verbose ) verbose=yes ;; |
||||
-h|--help ) help=yes ;; |
||||
-a|--add ) add=yes ;; |
||||
-r|--remove ) remove=yes ;; |
||||
-s|--smart ) smart=yes ;; |
||||
--name=* ) name=$arg ;; |
||||
--id=* ) id=$arg ;; |
||||
-* ) help="Invalid option \`$opt'"; break ;; |
||||
* ) break ;; |
||||
esac |
||||
shift |
||||
done |
||||
if [ ".$help" = .yes ]; then |
||||
echo "$progname --add|--remove --name=NAME [--smart] [--id=ID]"; |
||||
exit 0 |
||||
fi |
||||
if [ ".$add" = .no -a ".$remove" = .no ]; then |
||||
echo "$progname:ERROR: either option -a/--add or -r/--remove have to be specified" 1>&2 |
||||
exit 1 |
||||
fi |
||||
if [ ".$add" = .yes -a ".$remove" = .yes ]; then |
||||
echo "$progname:ERROR: option -a/--add and -r/--remove cannot be specified in parallel" 1>&2 |
||||
exit 1 |
||||
fi |
||||
if [ ".$name" = . ]; then |
||||
echo "$progname:ERROR: option --name has to be specified" 1>&2 |
||||
exit 1 |
||||
fi |
||||
if [ ".$id" = . ]; then |
||||
id="$l_prefix:$name" |
||||
fi |
||||
|
||||
|
||||
# find a reasonable temporary location |
||||
if [ ".$TMPDIR" != . ]; then |
||||
tmpdir="$TMPDIR" |
||||
elif [ ".$TEMPDIR" != . ]; then |
||||
tmpdir="$TEMPDIR" |
||||
else |
||||
tmpdir="/tmp" |
||||
fi |
||||
tmpfile="$tmpdir/pamtool.$$.tmp" |
||||
|
||||
# determine PAM information from OpenPKG configuration |
||||
if [ ! -f "$l_prefix/etc/rc" ]; then |
||||
echo "$progname:$ERROR: OpenPKG run-command facility not found under $l_prefix" 1>&2 |
||||
exit 1 |
||||
fi |
||||
pam_enable=`$l_prefix/etc/rc --query pam_enable` |
||||
pam_cfgloc=`$l_prefix/etc/rc --query pam_cfgloc` |
||||
pam_modpfx=`$l_prefix/etc/rc --query pam_modpfx` |
||||
|
||||
# perform operation |
||||
if [ ! -f "$l_prefix/sbin/rpmtool" ]; then |
||||
echo "$progname:$ERROR: OpenPKG rpmtool not found under $l_prefix/sbin/" 1>&2 |
||||
exit 1 |
||||
fi |
||||
rpmtool_config="$l_prefix/sbin/rpmtool config" |
||||
if [ ".$smart" = .yes ]; then |
||||
$rpmtool_config="$rpmtool_config -s" |
||||
fi |
||||
if [ ".$add" = .yes ]; then |
||||
# |
||||
# add a PAM entry |
||||
# |
||||
|
||||
# determine platform specific PAM entries |
||||
( case "$l_target" in |
||||
*-freebsd* ) |
||||
echo "auth sufficient ${pam_modpfx}pam_skey.so" |
||||
echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" |
||||
echo "account required ${pam_modpfx}pam_unix.so" |
||||
echo "password required ${pam_modpfx}pam_permit.so" |
||||
echo "session required ${pam_modpfx}pam_permit.so" |
||||
;; |
||||
*-linux* ) |
||||
echo "auth required ${pam_modpfx}pam_unix_auth.so shadow nodelay" |
||||
echo "auth required ${pam_modpfx}pam_nologin.so" |
||||
echo "account required ${pam_modpfx}pam_unix_acct.so" |
||||
echo "password required ${pam_modpfx}pam_unix_passwd.so shadow nullok use_authtok" |
||||
echo "session required ${pam_modpfx}pam_unix_session.so" |
||||
echo "session required ${pam_modpfx}pam_limits.so" |
||||
;; |
||||
*-solaris* ) |
||||
echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" |
||||
echo "account required ${pam_modpfx}pam_unix.so" |
||||
echo "password required ${pam_modpfx}pam_unix.so" |
||||
echo "session required ${pam_modpfx}pam_unix.so" |
||||
;; |
||||
* ) |
||||
echo "auth required ${pam_modpfx}pam_unix.so try_first_pass" |
||||
echo "account required ${pam_modpfx}pam_unix.so" |
||||
echo "password required ${pam_modpfx}pam_unix.so" |
||||
echo "session required ${pam_modpfx}pam_unix.so" |
||||
;; |
||||
esac |
||||
) >$tmpfile |
||||
|
||||
# add application name prefix if using combined configuration |
||||
if [ -f $pam_cfgloc ]; then |
||||
sed -e "s;^;$name ;" <$tmpfile >$tmpfile.n |
||||
mv $tmpfile.n $tmpfile |
||||
fi |
||||
|
||||
# create entry |
||||
if [ -f $pam_cfgloc ]; then |
||||
if [ ".$verbose" = .yes ]; then |
||||
echo "++ adding entry to $pam_cfgloc" |
||||
fi |
||||
$rpmtool_config -a -i $id $pam_cfgloc <$tmpfile || exit $? |
||||
elif [ -d $pam_cfgloc ]; then |
||||
if [ ".$verbose" = .yes ]; then |
||||
echo "++ adding entry to $pam_cfgloc/$name" |
||||
fi |
||||
$rpmtool_config -a -i $id $pam_cfgloc/$name <$tmpfile || exit $? |
||||
fi |
||||
|
||||
elif [ ".$remove" = .yes ]; then |
||||
# |
||||
# remove a PAM entry |
||||
# |
||||
|
||||
# remove entry |
||||
if [ -f $pam_cfgloc ]; then |
||||
if [ ".$verbose" = .yes ]; then |
||||
echo "++ removing entry from $pam_cfgloc" |
||||
fi |
||||
$rpmtool_config -r -i $id $pam_cfgloc || exit $? |
||||
elif [ -d $pam_cfgloc ]; then |
||||
if [ ".$verbose" = .yes ]; then |
||||
echo "++ removing entry from $pam_cfgloc/$name" |
||||
fi |
||||
$rpmtool_config -r -i $id $pam_cfgloc/$name || exit $? |
||||
if [ ! -s $pam_cfgloc/$name ]; then |
||||
rm -f $pam_cfgloc/$name >/dev/null 2>&1 || true |
||||
fi |
||||
fi |
||||
fi |
||||
|
||||
# cleanup |
||||
rm -f $tmpfile |
||||
exit 0 |
||||
|
@ -0,0 +1,19 @@
|
||||
#!@l_prefix@/lib/openpkg/bash @l_prefix@/etc/rc |
||||
## |
||||
## rc.pam -- Run-Commands for PAM |
||||
## |
||||
|
||||
%config |
||||
pam_enable="yes" |
||||
pam_cfgloc='@pam_cfgloc@' |
||||
pam_modpfx='@pam_modpfx@' |
||||
pam_incdir='@pam_incdir@' |
||||
pam_libdir='@pam_libdir@' |
||||
|
||||
%info |
||||
echo "PAM Enabled: ${pam_enable}" |
||||
echo "PAM Config Location: ${pam_cfgloc}" |
||||
echo "PAM Module Prefix: ${pam_modpfx}" |
||||
echo "PAM Include Directory: ${pam_incdir}" |
||||
echo "PAM Library Directory: ${pam_libdir}" |
||||
|
Loading…
Reference in new issue