Linux下4種禁用Root登陸的方法,你掌握了哪幾種呢?
我們都知道 Linux 下 Root 用戶的權(quán)限是最大的,因此一般不推薦直接使用 Root 用戶操作。通常都是使用普通用戶,在必要時(shí)通過 Sudo 命令來提權(quán)。
在 Ubuntu 中,更是直接把 Root 用戶直接禁用了。那么如何在 Linux 中禁止Root 登陸呢?今天,我們就來介紹幾種常用的方法。
1. 修改 Root 用戶的登陸 Shell
我們可以通過編輯 /etc/passwd 文件將 Root 用戶的登陸 Shell 改為 /sbin/nologin。
- $ sudo vim /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- to
- root:x:0:0:root:/root:/sbin/nologin
此后,使用 Root 用戶登陸只會(huì)顯示一條信息 “This account is currently not available”。 當(dāng)然你也可以通過修改 /etc/nologin.txt 來自定義出錯(cuò)信息。
這種方法只能禁止那些需要 Shell 用戶的登陸場(chǎng)景,但像 Sudo、FTP 之類的操作依然可以使用 Root 賬戶。
2. 禁止 Root 用戶在任何終端設(shè)備上登陸
Linux 下 PAM 模塊中有一個(gè)叫做 pam_securetty 的模塊,它可以限定 Root 用戶只能在安全終端上登陸。
而所謂的安全終端由 /etc/securetty 來決定,該文件由包含數(shù)行 tty 設(shè)備名(每行一個(gè)設(shè)備名,前面不加 /dev/ ),只有這些設(shè)備名才可允許 Root 用戶登錄。
因此,我們可以通過清空安全終端列表的方式來禁止 Root 用戶登陸。
- $ sudo mv /etc/securetty /etc/securetty.orig
- $ sudo touch /etc/securetty
- $ sudo chmod 600 /etc/securetty
這種方法只會(huì)影響需要分配終端的程序,比如 login,gdm/kdm/xdm 之類的顯示管理器等, 像 Su、Sudo、SCP、SFTP、SSH 之類的操作則無效。
3. 禁止 Root 用戶通過 SSH 登陸
修改 SSH 的配置文件 /etc/ssh/sshd_config,在其中加上 PermitRootLogin no 配置項(xiàng)。
然后,再重啟 SSHD 服務(wù)讓配置生效。
- $ sudo systemctl restart sshd
- OR
- $ sudo service sshd restart
很明顯,這種方法只會(huì)影響 SSH、SCP、SFTP 之類的 SSH 系列工具。
4. 通過 PAM 模塊禁止 Root 用戶訪問 Login 和 SSHD 服務(wù)
我們可以通過 /lib/security/pam_listfile.so 模塊來限定指定用戶禁止訪問某些服務(wù)。其步驟如下:
- 創(chuàng)建一個(gè)需要禁止訪問用戶的文件,如:/etc/deniedusers。其中加上 Root 或任意不想讓它訪問服務(wù)的用戶名。
- $ sudo echo root |tee -a /etc/deniedusers
- 設(shè)置這個(gè)文件的權(quán)限。
- $ sudo chmod 600 /etc/ssh/deniedusers
- 在 /etc/pam.d/login 或 /etc/pam.d/sshd 文件中加上如下的配置。
- auth required pam_listfile.so \
- onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers