用于检查现有组和用户的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"