安全:列出linux中所有可登录shell/ssh/sudo的用户
一,列出可登录shell的用户
root@lhdpc:~# grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
liuhongdi:x:1000:1000:liuhongdi,,,:/home/liuhongdi:/bin/bash
只显示用户名:
root@lhdpc:~# grep bash /etc/passwd | cut -d: -f1
root
liuhongdi
也可以把常见的3个不允许登录的类型排除:
root@lhdpc:~# grep -v "/sbin/nologin" /etc/passwd | grep -v "/bin/false" | grep -v '/bin/sync'
root:x:0:0:root:/root:/bin/bash
liuhongdi:x:1000:1000:liuhongdi,,,:/home/liuhongdi:/bin/bash
二,列出可登录ssh的用户
[root@web ssh]# grep AllowUsers /etc/ssh/sshd_config
AllowUsers user1 user2@192.168.1.20 user3@192.168.1.0/24
说明:如果sshd_config未设置AllowUsers,表示所有能获得shell的用户可以通过ssh登录此机器,
AllowUsers
指令指定了哪些用户被允许通过SSH连接到服务器。DenyUsers
指令则指定了哪些用户不被允许通过SSH连接到服务器。
1,如果同时指定了AllowUsers
以及 DenyUsers
,
此时,AllowUsers优先级高,其他非AllowUsers用户均禁止ssh登录
2,如果同时指定了AllowUsers
以及 DenyUsers
,
有同一个用户同时存在于此两者之中,则表示禁止访问,因为:
这些指令可以同时存在于sshd_config文件中,但是如果存在冲突,DenyUsers指令会覆盖AllowUsers指令。
三,列出可sudo的用户:
1,验证一个用户是否有sudo权限?
[root@base2 ~]# sudo -l -U lhd
Matching Defaults entries for lhd on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG
LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User lhd may run the following commands on this host:
(ALL) ALL
2,从/etc/sudoers可以查看:
[root@base2 ~]# grep -v "^#" /etc/sudoers | grep -v '^$' | grep "ALL=(ALL)"
lhd ALL=(ALL) ALL
说明:grep -v "^#" /etc/sudoers : 去掉以#打头的
grep -v '^$' : 去掉空白行
不以
%
号开头的表示
"将要授权的用户"
root
以
%
号开头的表示
"将要授权的组"
%
wheel
3,用脚本列出:
list_all_sudoer.sh
#!/bin/bash
for u in `cat /etc/passwd | cut -d":" -f1`; do
sudo -l -U $u;
done