我在编写 Bourne / BASH 脚本时需要帮助,该脚本通过计算系统密码文件中包含的密码数来确定系统的潜在用户数。
我试过 /etc/passwd。它总是出现“权限被拒绝”。我将自己更改为root用户,那里也有同样的问题。我不知道该怎么做。
对于普通用户,该文件/etc/passwd
通常没有读保护,因此您需要调查为什么您的系统会出现这种情况。但即使你能读懂,它也会包含很多技术用户(如lp
、syslog
、bin
、daemon
等);我不确定你想包括那些。要过滤掉这些,您需要一个已知技术用户的名称列表,例如:
egrep -v '^(daemon|bin|sys|sync|games|man|lp|mail|news|uucp|proxy|nobody|syslog)' /etc/passwd
假设您的非系统用户帐户从 500 开始编号:
getent passwd | awk -F':' '{ if ($3 >= 500) print $1}'
如果他们从 1000 开始:
getent passwd | awk -F':' '{ if ($3 >= 1000) print $1}'
下一个:
计算高ID“nobody”帐户的数量(例如,“nfsnobody”)。这是从上述命令返回的任何用户,看起来像是虚拟帐户。
附加| wc -l
到上面使用的命令并从步骤 1 中减去计数。
这应该提供系统上非系统帐户(例如,“潜在”用户)的数量。