diff --git a/lui_checkpoint_fw.sh b/lui_checkpoint_fw.sh
new file mode 100644
index 0000000..7565ba0
--- /dev/null
+++ b/lui_checkpoint_fw.sh
@@ -0,0 +1,168 @@
+#!/bin/bash
+# LUI for RedHat Linux / CheckPoint Firewall - Version 2.11
+#
+# Description: This script searches and organizes information about users on RedHat systems. It is written to make administration easier and for better transparency.
+#
+# Note: LUI has been tested on most CheckPoint firewalls (before 2015).
+#
+# Author: s1x
+# License: GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007
+#
+# Copyright (C) 2015 s1x, pgp key 0xF673700F
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+
+function help {
+ echo '''
+ Linux User Info v2.1
+
+ -h This help message.
+ -i User information, use as "-i user".
+ -x eXtended information.
+ -a List all users.
+ -l List all users with locked password.
+ -u List all users with unlocked password.
+ -n List users with nologin shell.
+
+ You can user multiple arguments too, eg. "sh lui_checkpoint_fw.sh -l -u"
+'''
+}
+
+function user_info {
+ data=$(grep ^$OPTARG: /etc/passwd)
+ if [ -z "$data" ]
+ then
+ echo "User not found in /etc/passwd."
+ exit ;
+ fi
+ user=$(echo $data | cut -d: -f1 | head -1)
+ comment=$(grep ^$user /etc/passwd | cut -d: -f5)
+ if [ -z "$comment" ]
+ then
+ comment="-"
+ fi
+ home=$(echo $data | cut -d: -f6)
+ if [ -z "$home" ]
+ then
+ home="-"
+ fi
+ homepriv=$(ls -ld $home)
+ if [ -z "$homepriv" ]
+ then
+ homepriv="Home directory does not exist."
+ fi
+ pass=$(passwd -S root)
+ groups=$(grep "^$user:" /etc/group | rev | cut -d: -f1 | rev)
+ if [ -z "$groups" ]
+ then
+ groups="-"
+ fi
+ shell=$(echo $data | cut -d: -f7)
+ group=$(echo $data | cut -d: -f3)
+ ID=$(echo $data | cut -d: -f4)
+
+ echo
+ echo "User name: $user"
+ echo "Comment: $comment"
+ echo "Password: $pass"
+ echo "Home dir: $home"
+ echo "Home perm: $homepriv"
+ echo "Groups: $groups"
+ echo "Login shell: $shell"
+ echo "User ID: $ID"
+ echo "Group ID: $group"
+ echo
+}
+
+function eXtended {
+#Experimental function!
+ echo
+ echo "User information"
+ echo "----------------"
+ user_info
+ chage -l $user | tr -d '\t'
+ echo
+ echo
+ echo "Login information"
+ echo -e "----------------- \n"
+ echo "Last four logins:"
+ last | grep $user | tail -4
+ echo
+ fails=$(pam_tally2 --user root | sed -n '1!p' | rev | tr -s ' ' | rev | cut -d ' ' -f 2)
+ echo "Numer of current failed logins: " $fails
+ echo "(Couter reset with pam_tally2.)"
+ echo
+ fail_list=$(grep sshd.\*Failed /var/log/secure | grep $user)
+ if [ ! -z "$fail_list" ]
+ then
+ echo "Last six login fails:"
+ grep sshd.\*Failed /var/log/secure | grep $user | tail -6
+ fi
+ echo
+}
+
+function all_users {
+ min_uid=$(grep "^UID_MIN" /etc/login.defs | tr -s ' ' | cut -d' ' -f2)
+ echo "System users / Under UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 < minuid ) print $0 }' /etc/passwd
+ echo
+ echo "Normal users / Below UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 >= minuid ) print $0 }' /etc/passwd
+}
+
+function locked_users {
+ echo "Locked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep "locked"
+ echo
+}
+
+function unlocked_users {
+ echo "Unlocked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -v "locked."
+ echo
+}
+
+function nologin_users {
+ echo "Users with nologin:"
+ grep /nologin /etc/passwd
+ echo
+}
+
+
+while getopts ":hi:x:alun" opt;
+ do
+case $opt in
+ h) help ;;
+ i) user_info ;;
+ x) eXtended ;;
+ a) all_users ;;
+ l) locked_users ;;
+ u) unlocked_users ;;
+ n) nologin_users ;;
+ \?)
+ echo "Invalid option."
+ exit 1 ;;
+ :)
+ echo "Option -$OPTARG requires an argument."
+
+ esac
+done
+
+if [ -z "$1" ]
+ then
+ help
+fi
diff --git a/lui_debian.sh b/lui_debian.sh
new file mode 100755
index 0000000..92f2532
--- /dev/null
+++ b/lui_debian.sh
@@ -0,0 +1,166 @@
+#!/bin/bash
+# LUI for Debian - Version 2.1.6b
+#
+# Description: This script searches and organizes information about users on Debian systems. It is written to make administration easier and for better transparency.
+#
+# Note: this program has been tested on Debian 7 and Debian 8.
+#
+# Author: s1x
+# License: GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007
+#
+# Copyright (C) 2015 s1x, pgp key 0xF673700F
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+function help {
+ echo '''
+ Linux User Info
+
+ -h This help message.
+ -i User information, use as "-i user".
+ -x eXtended information.
+ -a List all users.
+ -l List all users with locked password.
+ -u List all users with unlocked password.
+ -n List users with nologin shell.
+
+ You can use multiple arguments too, eg. "./lui_deb.sh -l -u"
+ '''
+}
+
+function user_info {
+ data=$(grep ^$OPTARG: /etc/passwd)
+ if [ -z "$data" ]
+ then
+ echo "User not found in /etc/passwd."
+ exit ;
+ fi
+ user=$(echo $data | cut -d: -f1)
+ comment=$(grep ^$user /etc/passwd | cut -d: -f5)
+ if [ -z "$comment" ]
+ then
+ comment="-"
+ fi
+ home=$(echo $data | cut -d: -f6)
+ if [ -z "$home" ]
+ then
+ home="-"
+ fi
+ homepriv=$(ls -ld $home | awk {'print $1,$3,$4'})
+ if [ -z "$homepriv" ]
+ then
+ homepriv="Home directory does not exist."
+ fi
+ pass=$(passwd -S $OPTARG | cut -d' ' -f2-)
+ groups=$(groups $user | cut -d: -f2)
+ if [ -z "$groups" ]
+ then
+ groups="-"
+ fi
+ shell=$(echo $data | cut -d: -f7)
+ groupid=$(echo $data | cut -d: -f3)
+ ID=$(echo $data | cut -d: -f4)
+
+ echo
+ echo "User name: $user"
+ echo "Comment: $comment"
+ echo "Password: $pass"
+ echo "Home dir: $home"
+ echo "Home perm: $homepriv"
+ echo "Groups: $groups"
+ echo "Login shell: $shell"
+ echo "User ID: $ID"
+ echo "Group ID: $groupid"
+ echo
+}
+
+function eXtended {
+#Experimental function!
+ echo
+ echo "User information"
+ echo "----------------"
+ user_info
+ chage -l $user | tr -d '\t'
+ echo
+ echo
+ echo "Login information"
+ echo -e "----------------- \n"
+ echo "Last four logins:"
+ last | grep $user | tail -4 | tr -s ' '
+ echo
+ fails=$(pam_tally --user $user | rev | cut -d ' ' -f1 | rev)
+ echo "Numer of failed logins: " $fails
+ echo
+ fail_list=$(grep sshd.\*Failed /var/log/auth.log | grep $user)
+ if [ ! -z "$fail_list" ]
+ then
+ echo "Last six login fails:"
+ grep sshd.\*Failed /var/log/auth.log | grep $user | tail -6
+ fi
+}
+
+function all_users {
+ min_uid=$(grep "^UID_MIN" /etc/login.defs | tr -s ' ' | cut -d' ' -f2)
+ echo "System users / Under UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 < minuid ) print $0 }' /etc/passwd
+ grep nobody /etc/passwd
+ echo
+ echo "Normal users / Below UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 >= minuid ) print $0 }' /etc/passwd | grep -v ^nobody:
+ echo
+}
+
+function locked_users {
+ echo "Locked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -e "\sL\s"
+ echo
+}
+
+function unlocked_users {
+ echo "Unlocked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -v -e "\sL\s"
+ echo
+}
+
+function nologin_users {
+ echo "Users with nologin:"
+ cat /etc/passwd | grep /nologin
+ echo
+}
+
+
+while getopts ":hi:x:alun" opt;
+ do
+ case $opt in
+ h) help ;;
+ i) user_info ;;
+ x) eXtended ;;
+ a) all_users ;;
+ l) locked_users ;;
+ u) unlocked_users ;;
+ n) nologin_users ;;
+ \?)
+ echo "Invalid option."
+ exit 1 ;;
+ :)
+ echo "Option -$OPTARG requires an argument." ;;
+ esac
+ done
+
+if [ -z "$1" ]
+ then
+ help
+fi
diff --git a/lui_redhat.sh b/lui_redhat.sh
new file mode 100644
index 0000000..6ce0f97
--- /dev/null
+++ b/lui_redhat.sh
@@ -0,0 +1,168 @@
+#!/bin/bash
+# LUI for RedHat Enterprise Linux - Version 2.1.7b
+#
+# Description: This script searches and organizes information about users on RedHat systems. It is written to make administration easier and for better transparency.
+#
+# Note: this program has been tested on RedHat 6, RedHat 7, CentOS 7 and Fedora 20.
+#
+# Author: s1x
+# License: GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007
+#
+# Copyright (C) 2015 s1x, pgp key 0xF673700F
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+
+function help {
+ echo '''
+ Linux User Info v2.1.7b
+
+ -h This help message.
+ -i User information, use as "-i user".
+ -x eXtended information.
+ -a List all users.
+ -l List all users with locked password.
+ -u List all users with unlocked password.
+ -n List users with nologin shell.
+
+ You can user multiple arguments too, eg. "./lui_rhl.sh -l -u"
+'''
+}
+
+function user_info {
+ data=$(grep ^$OPTARG: /etc/passwd)
+ if [ -z "$data" ]
+ then
+ echo "User not found in /etc/passwd."
+ exit ;
+ fi
+ user=$(echo $data | cut -d: -f1 | head -1)
+ comment=$(grep ^$user /etc/passwd | cut -d: -f5)
+ if [ -z "$comment" ]
+ then
+ comment="-"
+ fi
+ home=$(echo $data | cut -d: -f6)
+ if [ -z "$home" ]
+ then
+ home="-"
+ fi
+ homepriv=$(ls -ld $home | awk {'print $1,$3,$4'})
+ if [ -z "$homepriv" ]
+ then
+ homepriv="Home directory does not exist."
+ fi
+ pass=$(passwd -S $OPTARG | awk {'print $8,$9,$10,$11'} | sed -e 's/(//' -e 's/)//')
+ groups=$(grep "^$user:" /etc/group | rev | cut -d: -f1 | rev)
+ if [ -z "$groups" ]
+ then
+ groups="-"
+ fi
+ shell=$(echo $data | cut -d: -f7)
+ group=$(echo $data | cut -d: -f3)
+ ID=$(echo $data | cut -d: -f4)
+
+ echo
+ echo "User name: $user"
+ echo "Comment: $comment"
+ echo "Password: $pass"
+ echo "Home dir: $home"
+ echo "Home perm: $homepriv"
+ echo "Groups: $groups"
+ echo "Login shell: $shell"
+ echo "User ID: $ID"
+ echo "Group ID: $group"
+ echo
+}
+
+function eXtended {
+#Experimental function!
+ echo
+ echo "User information"
+ echo "----------------"
+ user_info
+ chage -l $user | tr -d '\t'
+ echo
+ echo
+ echo "Login information"
+ echo -e "----------------- \n"
+ echo "Last four logins:"
+ last | grep $user | tail -4
+ echo
+ fails=$(pam_tally2 --user root | sed -n '1!p' | rev | tr -s ' ' | rev | cut -d ' ' -f 2)
+ echo "Numer of current failed logins: " $fails
+ echo "(Couter reset with pam_tally2.)"
+ echo
+ fail_list=$(grep sshd.\*Failed /var/log/secure | grep $user)
+ if [ ! -z "$fail_list" ]
+ then
+ echo "Last six login fails:"
+ grep sshd.\*Failed /var/log/secure | grep $user | tail -6
+ fi
+ echo
+}
+
+function all_users {
+ min_uid=$(grep "^UID_MIN" /etc/login.defs | tr -s ' ' | cut -d' ' -f2)
+ echo "System users / Under UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 < minuid ) print $0 }' /etc/passwd
+ echo
+ echo "Normal users / Below UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 >= minuid ) print $0 }' /etc/passwd
+}
+
+function locked_users {
+ echo "Locked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep "locked"
+ echo
+}
+
+function unlocked_users {
+ echo "Unlocked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -v "locked."
+ echo
+}
+
+function nologin_users {
+ echo "Users with nologin:"
+ grep /nologin /etc/passwd
+ echo
+}
+
+
+while getopts ":hi:x:alun" opt;
+ do
+case $opt in
+ h) help ;;
+ i) user_info ;;
+ x) eXtended ;;
+ a) all_users ;;
+ l) locked_users ;;
+ u) unlocked_users ;;
+ n) nologin_users ;;
+ \?)
+ echo "Invalid option."
+ exit 1 ;;
+ :)
+ echo "Option -$OPTARG requires an argument."
+
+ esac
+done
+
+if [ -z "$1" ]
+ then
+ help
+fi
diff --git a/lui_ubuntu.sh b/lui_ubuntu.sh
new file mode 100644
index 0000000..6d56092
--- /dev/null
+++ b/lui_ubuntu.sh
@@ -0,0 +1,169 @@
+#!/bin/bash
+# LUI for Ubuntu - Version 2.1.6b
+#
+# Description: This script searches and organizes information about users on Ubuntu systems. It is written to make administration easier and for better transparency.
+#
+# Note: this program has been tested on Ubuntu 13.
+#
+# Author: s1x
+# License: GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007
+#
+# Copyright (C) 2015 s1x, pgp key 0xF673700F
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+
+
+help () {
+ echo '''
+ Linux User Info v2.1.6b
+
+ -h This help message.
+ -i User information, use as "-i user".
+ -x eXtended information.
+ -a List all users.
+ -l List all users with locked password.
+ -u List all users with unlocked password.
+ -n List users with nologin shell.
+
+ You can use multiple arguments too, eg. "./lui_ubu.sh -l -u"
+ '''
+ }
+
+user_info () {
+ data=$(grep ^$OPTARG: /etc/passwd)
+ if [ -z "$data" ]
+ then
+ echo "User not found in /etc/passwd."
+ exit ;
+ fi
+ user=$(echo $data | cut -d: -f1)
+ comment=$(grep ^$user /etc/passwd | cut -d: -f5)
+ if [ -z "$comment" ]
+ then
+ comment="-"
+ fi
+ home=$(echo $data | cut -d: -f6)
+ if [ -z "$home" ]
+ then
+ home="-"
+ fi
+ homepriv=$(ls -ld $home | awk {'print $1,$3,$4'})
+ if [ -z "$homepriv" ]
+ then
+ homepriv="Home directory does not exist."
+ fi
+ pass=$(passwd -S $OPTARG | cut -d' ' -f2-)
+ groups=$(grep $user /etc/group | cut -d: -f 1 | grep -v $user | paste -sd ' ')
+ if [ -z "$groups" ]
+ then
+ groups="-"
+ fi
+ shell=$(echo $data | cut -d: -f7)
+ group=$(echo $data | cut -d: -f3)
+ ID=$(echo $data | cut -d: -f4)
+
+ echo
+ echo "User name: $user"
+ echo "Comment: $comment"
+ echo "Password: $pass"
+ echo "Home dir: $home"
+ echo "Home perm: $homepriv"
+ echo "Groups: $groups"
+ echo "Login shell: $shell"
+ echo "User ID: $ID"
+ echo "Group ID: $group"
+ echo
+}
+
+eXtended () {
+#Experimental function!
+ echo
+ echo "User information"
+ echo "----------------"
+ user_info
+ chage -l $user | tr -d '\t'
+ echo
+ echo
+ echo "Login information"
+ echo "-----------------"
+ echo
+ echo "Last four logins:"
+ last | grep $user | tail -4 | tr -s ' '
+ echo
+ fails=$(pam_tally --user $user | rev | cut -d ' ' -f1 | rev)
+ echo "Numer of failed logins: " $fails
+ echo
+ fail_list=$(grep sshd.\*Failed /var/log/auth.log | grep $user)
+ if [ ! -z "$fail_list" ]
+ then
+ echo "Last six login fails:"
+ grep sshd.\*Failed /var/log/auth.log | grep $user | tail -6
+ fi
+}
+
+all_users () {
+ min_uid=$(grep "^UID_MIN" /etc/login.defs | tr -s ' ' | cut -d' ' -f2)
+ echo "System users / Under UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 < minuid ) print $0 }' /etc/passwd
+ grep nobody /etc/passwd
+ echo
+ echo "Normal users / Below UID $min_uid"
+ echo "---------------------------------"
+ awk -F':' -v "minuid=$min_uid" '{ if ( $3 >= minuid ) print $0 }' /etc/passwd | grep -v ^nobody:
+ echo
+}
+
+locked_users () {
+ echo "Locked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -e "\sL\s"
+ echo
+}
+
+unlocked_users () {
+ echo "Unlocked users:"
+ cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }' | grep -v -e "\sL\s"
+ echo
+}
+
+nologin_users () {
+ echo "Users with nologin:"
+ grep /nologin /etc/passwd
+ echo
+}
+
+
+while getopts ":hi:x:alun" opt;
+ do
+ case $opt in
+ h) help ;;
+ i) user_info ;;
+ x) eXtended ;;
+ a) all_users ;;
+ l) locked_users ;;
+ u) unlocked_users ;;
+ n) nologin_users ;;
+ \?)
+ echo "Invalid option."
+ exit 1 ;;
+ :)
+ echo "Option -$OPTARG requires an argument." ;;
+ esac
+ done
+
+if [ -z "$1" ]
+ then
+ help
+fi