使用 egrep 排除系统用户
exclude system users using egrep
我尝试排除所有系统用户并尝试在 Solaris 10 中获取真实用户列表。我都试过了:
egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd" /etc/passwd
和
cat /etc/passwd | egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd"
但两者都产生了空输出。 (没有错误信息)。那么正确的做法是什么?
问题是 passwd
条目包含一个 shell 字段,通常看起来像 /bin/sh
、/usr/bin/bash
等。您包含了序列 bin
在您的排除列表中(尝试排除 bin
用户)并且它排除了每个条目。
尝试限制过滤,例如要求匹配从行首开始:
egrep -v "^(root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd)" /etc/passwd
我尝试排除所有系统用户并尝试在 Solaris 10 中获取真实用户列表。我都试过了:
egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd" /etc/passwd
和
cat /etc/passwd | egrep -v "root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd"
但两者都产生了空输出。 (没有错误信息)。那么正确的做法是什么?
问题是 passwd
条目包含一个 shell 字段,通常看起来像 /bin/sh
、/usr/bin/bash
等。您包含了序列 bin
在您的排除列表中(尝试排除 bin
用户)并且它排除了每个条目。
尝试限制过滤,例如要求匹配从行首开始:
egrep -v "^(root|daemon|bin|sys|adm|lp|uucp|nuucp|smmsp|listen|webservd|postgres|svctag|unknown|nobody|noaccess|nobody4|perl|sshd)" /etc/passwd