如何检查新用户名是否是系统用户?

如何检查新用户名是否是系统用户?

我想创建一个更改用户名的脚本。我想检查用户是否不是系统用户。我的想法是检查 /etc/passwd 并仅选择 ID 介于 1000 和 60000 之间的用户以及具有 /home 目录的用户,例如

user:x:1005:1021::/home/user:/bin/sh

我现在的 grep 命令是这样的

egrep -E '1[0-9]{3}.*/home' /etc/passwd 

如您所见,它与我的 [1000-60000] 模式不匹配,也不符合名称

答案1

您可以使用awk查找当地的id >= 1000 的用户:

awk -F: '$3>=1000 && $3!=65534 {print $1}' /etc/passwd

还要检查下面的主文件夹/home

awk -F: '$3>=1000 && $3 != 65534 && $6 ~ /^\/home/ {print $1}' /etc/passwd

替换/etc/passwd<(getent passwd)列出所有用户,包括网络帐户...

也可以看看这个相关问题, 也这个

相关内容