除了打印用户的其他详细信息之外,我还需要编写一个小的Linux脚本来区分service
帐户和normal user
帐户。
一切都适合我,除了我怀疑我的方式是找出用户或服务帐户是否完全证明。
这是我到目前为止所做的一个简单的检查我的脚本:
awk -F":" '{OFS=":";print $2,$6,$NF}' /etc/passwd | sort | uniq > passwd_processed
reg=".*/[nologin|false]"
while IFS=":" read -r user dir lshell;do
if [[ "$lshell" =~ $reg ]]; then
utype="Service"
else
utype="User"
fi
....
...
done < passwd_processed
...
所以基本上检查登录shell。如果它包含nologin
或false
(考虑服务帐户没有实际的shell登录,因此shell可以是/[usr]/bin/false
或/[usr]/bin/nologin
),则在shell字段中,将其声明为Service
个帐户User
帐户。
这个检查是否足够。或者是否有一些明确的方法可以在脚本中了解和使用以区分Linux中的Service
和User
帐户?
答案 0 :(得分:0)
正如@chepner所提到的,系统或普通用户/组的某些操作系统保留范围。
如果您使用的是基于Debian的发行版,则可能需要查看/etc/adduser.conf
:
# FIRST_SYSTEM_[GU]ID to LAST_SYSTEM_[GU]ID inclusive is the range for UIDs
# for dynamically allocated administrative and system accounts/groups.
# Please note that system software, such as the users allocated by thebase-passwd
# package, may assume that UIDs less than 100 are unallocated.
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999
FIRST_SYSTEM_GID=100
LAST_SYSTEM_GID=999
# FIRST_[GU]ID to LAST_[GU]ID inclusive is the range of UIDs of dynamically
# allocated user accounts/groups.
FIRST_UID=1000
LAST_UID=59999
FIRST_GID=1000
LAST_GID=59999