【问题标题】:BASH script to get the number of potential users获取潜在用户数量的 BASH 脚本
【发布时间】:2013-11-13 11:00:13
【问题描述】:

我在编写 Bourne / BASH 脚本时需要帮助,该脚本通过计算系统密码文件中包含的密码数来确定系统的潜在用户数。

我试过 /etc/passwd。它总是出现“权限被拒绝”。我将自己更改为root用户,那里也有同样的问题。我不知道该怎么做。

【问题讨论】:

  • 作为root,你应该可以阅读/etc/passwd
  • 展示你的剧本! /etc/passwd 应该是文字可读的。 getent passwd 还应该列出潜在用户的密码行。
  • 即使是非root用户也应该是可读的。其他地方出了问题。

标签: linux bash unix


【解决方案1】:

假设您的非系统用户帐户从 500 开始编号:

getent passwd | awk -F':' '{ if ($3 >= 500) print $1}'

如果它们从 1000 开始:

getent passwd | awk -F':' '{ if ($3 >= 1000) print $1}'

下一步:

  1. 计算高 ID“nobody”帐户的数量(例如,“nfsnobody”)。这是从上述命令返回的任何用户,看起来像是虚拟帐户。

  2. | wc -l 附加到上面使用的命令中,并从步骤 1 中减去计数。

这应该提供系统上非系统帐户(例如,“潜在”用户)的数量。

【讨论】:

    【解决方案2】:

    文件/etc/passwd 通常不会对普通用户进行读保护,因此您需要调查您的系统上出现这种情况的原因。但即使你能看懂,它也会包含很多技术用户(如lpsyslogbindaemon 等);我不确定你想包括那些。要过滤掉这些,您需要一个已知技术用户的名称列表,例如。 g.:

    egrep -v '^(daemon|bin|sys|sync|games|man|lp|mail|news|uucp|proxy|nobody|syslog)' /etc/passwd
    

    【讨论】:

      猜你喜欢
      • 2012-01-22
      • 2013-06-10
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      相关资源
      最近更新 更多