热门推荐

开发工具

如何查看Linux系统中可以登录的账户?

在Linux系统中,可以通过分析用户配置文件和Shell类型来查看允许登录的账户。以下是详细方法:


一、查看所有可登录的用户账户

1. 直接过滤 /etc/passwd 文件

# 排除使用非交互式Shell的用户(如nologin/false)
grep -vE '/sbin/nologin|/bin/false' /etc/passwd | cut -d: -f1,7


输出示例:

root:/bin/bash
user1:/bin/bash
git:/usr/bin/git-shell


字段说明:

第1列:用户名
第7列:用户登录Shell(可登录的Shell路径)


2. 基于合法Shell列表 (/etc/shells)

# 获取系统定义的合法Shell列表
valid_shells=$(grep -E '^/' /etc/shells | tr '\n' '|' | sed 's/|$//')

# 匹配使用合法Shell的用户
awk -F: -v shells="$valid_shells" '$7 ~ shells {print $1}' /etc/passwd


输出示例:

root
user1
git



二、查看可登录用户的详细信息

1. 完整用户信息

# 显示可登录用户的完整信息(UID、GID、家目录等)
grep -vE '/sbin/nologin|/bin/false' /etc/passwd


输出示例:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash
git:x:1001:1001::/home/git:/usr/bin/git-shell


字段解析(以冒号分隔):

用户名:密码占位符:UID:GID:描述:家目录:登录Shell


2. 仅查看用户名和Shell

awk -F: '$7 !~ /(\/nologin|\/false)$/ {print "用户:" $1, "Shell:" $7}' /etc/passwd


输出示例:

用户:root Shell:/bin/bash
用户:user1 Shell:/bin/bash
用户:git Shell:/usr/bin/git-shell



三、验证用户是否允许登录

1. 检查指定用户的Shell类型

# 查询用户"git"的登录Shell
getent passwd git | awk -F: '{print $7}'


输出示例:

/usr/bin/git-shell


2. 测试用户是否被锁定

# 检查用户是否被锁定(!标记表示锁定)
sudo grep '^user1:' /etc/shadow


输出示例:

user1:$6$...:19485:0:99999:7:::
# 如果显示为 user1:!:... 则说明被锁定



四、扩展场景

1. 查看允许SSH登录的用户

# 查看SSH配置中的允许登录用户(需配置文件存在)
if [ -f /etc/ssh/sshd_config ]; then
    grep -E '^AllowUsers|^AllowGroups' /etc/ssh/sshd_config
fi


输出示例:

AllowUsers user1 admin
AllowGroups ssh-users


2. 查看sudo权限用户

# 查看拥有sudo权限的用户(/etc/sudoers或/etc/sudoers.d/*)
grep -E '^[^#]*\s+ALL=.*' /etc/sudoers /etc/sudoers.d/*



五、注意事项

1、系统账户:如root、git等可能拥有合法Shell,但实际用途可能限制登录。

2、PAM限制:即使用户Shell合法,也可能被PAM模块(如/etc/security/access.conf)限制登录。

3、SSH密钥登录:某些用户可能仅允许密钥登录而非密码,需检查~/.ssh/authorized_keys。

通过以上方法,您可以快速识别系统中允许登录的账户,并根据需要进一步验证或调整权限。