用于检查现有组和用户的UNIX/Linux命令

时间:2020-01-09 10:41:18  来源:igfitidea点击:

如何检查Linux操作系统下的现有Linux/UNIX用户和组?
您可以使用以下命令轻松检查Linux或类Unix系统(例如HP-UX,AIX,FreeBSD,Apple OSX等)下的现有用户和组:

  • getent命令:从Linux或类Unix系统上的许多重要的文本文件(称为数据库)中获取特定用户或组的详细信息。
    这是推荐的可移植方法,可获取有关用户和组的信息。

  • 直接查询/etc/passwd中的用户名或/etc/group文件中的组名。

方法1:使用getent命令查找用户名和组名

语法如下,以确定系统中是否存在名为foo的用户:

getent passwd userNameHere
getent passwd foo

找出系统中是否存在名为bar的组的语法如下:

getent group groupNameHere
getent group bar

方法2:找出/etc/passwd文件中是否存在用户

/etc/passwd文件存储登录期间所需的基本信息。
您所要做的就是使用以下语法在该文件中搜索用户名:

grep username /etc/passwd

或者

egrep -i "^username" /etc/passwd

例如,要查找Hyman用户是否存在,请执行:

$ egrep -i "^Hyman" /etc/passwd

或者

$ egrep -i "^Hyman:" /etc/passwd

输出示例:

Hyman:x:1000:1000:,,,,:/home/Hyman:/bin/bash

快速的Shell脚本代码:

#!/bin/bash
# init
USERID=""
#....
/bin/egrep  -i "^${USERID}:" /etc/passwd
if [ $? -eq 0 ]; then
   echo "User $USERID exists in /etc/passwd"
else 
   echo "User $USERID does not exists in /etc/passwd"
fi
# ....

通常,如果找到用户帐户(行),则返回状态为0,否则返回1。

使用awk命令搜索用户名

搜索名为apache的用户的语法如下

awk -F':' '/^apache/{print }' /etc/passwd

找出组是否存在于/etc/group文件中

/etc/group是一个文本文件,用于定义Linux和UNIX操作系统下用户所属的组。
同样,您必须使用以下语法搜索/etc/group文件:

$ egrep -i "^groupname" /etc/group

例如,找出插孔组是否存在,请执行:

$ egrep -i "^Hyman" /etc/group

ID命令

id命令是另一种显示任何USERNAME或当前用户的用户/组信息的选项。
要查找有关用户tom的更多信息,请执行:

$ id tom

输出示例:

uid=516(tom) gid=516(tom) groups=516(tom)

如果找到用户帐户(行),则id命令的退出状态为0,否则返回1。
使用id命令的示例shell脚本:

#!/bin/bash
USERID=""
/bin/id $USERID 2>/dev/null
[ $? -eq 0 ] && echo "User found" || echo "User not found"
 
/bin/id -g $USERID 2>/dev/null
[ $? -eq 0 ] && echo "Group found" || echo "Group not found"