unix-privesc-check/lib/misc/passwd

79 lines
1.9 KiB
Bash

#!/bin/sh
# $Revision: 278 $
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# (c) Tim Brown, 2012
# <mailto:timb@nth-dimension.org.uk>
# <http://www.nth-dimension.org.uk/> / <http://www.machine.org.uk/>
#
# Supports: Linux
if [ -z "${passwdincluded}" ]
then
passwdincluded=1
. lib/misc/validate
passwd_list () {
oldifs="${IFS}"
IFS=":"
egrep -v "^#|^$" "/etc/passwd" | while read username hash userid groupid gecos homefilename shellfilename
do
IFS="${oldifs}"
printf -- "${username}\n"
IFS=":"
done
IFS="${oldifs}"
}
passwd_show_hash () {
pattern="${1}"
[ "`validate_is_string \"${pattern}\"`" ] || false
oldifs="${IFS}"
IFS=":"
egrep -v "^#|^$" "/etc/passwd" | while read username hash userid groupid gecos homefilename shellfilename
do
hash="`printf \"${hash}\" | sed \"s/\\\!/\\\\\!/g\"`"
IFS="${oldifs}"
if [ "${username}" = "${pattern}" ]
then
printf -- "${hash}\n"
fi
IFS=":"
done
IFS="${oldifs}"
}
passwd_show_homedir () {
pattern="${1}"
[ "`validate_is_string \"${pattern}\"`" ] || false
oldifs="${IFS}"
IFS=":"
egrep -v "^#|^$" "/etc/passwd" | while read username hash userid groupid gecos homefilename shellfilename
do
IFS="${oldifs}"
if [ "${username}" = "${pattern}" ]
then
printf -- "${homefilename}\n"
fi
IFS=":"
done
IFS="${oldifs}"
}
fi