安全:列出linux中所有可登入shell/ssh/sudo的使用者

刘宏缔的架构森林發表於2024-10-12

一,列出可登入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可以檢視:

3,用指令碼列出:

list_all_sudoer.sh

#!/bin/bash
for u in `cat /etc/passwd | cut -d":" -f1`; do
        sudo -l -U $u;
done

相關文章