Linux 添加使用者及提權#
當你剛拿到一台伺服器時,通常會禁用 root 使用者登入,而使用其他一般使用者,這時就需要建立一個新的使用者。
添加使用者#
建立一個新的使用者:
$ useradd boo
設定密碼:
$ passwd boo
提權#
此時此使用者已經可以正常使用了,但是還沒有提權,所以很多事情做不了,這時可以把該使用者加入 sudo
使用者組,透過 sudo
命令來進行提權。
$ usermod -G sudo boo
一般直接就加入成功了,但是有些發行版本預設並沒有 sudo
使用者組,所以這時需要先添加使用者組。
$ groupadd sudo
上圖是帶 sudo
使用者組的 Linux 發行版的 visudo
配置檔案
手動添加完使用者組之後,還需要修改 sudoers
配置檔案,這裡有幾種方式,根據實際情況進行選擇:
- 允許
sudo
組的成員執行任何命令
$ sudo visudo // 或者 sudo vim /etc/sudoers
// 添加以下內容
# the 'sudo' group has all the sudo privileges
%sudo ALL=(ALL:ALL) ALL
- 直接允許該使用者執行任何命令
$ sudo visudo
// 添加以下內容,注意:沒有 %
# Allow boo to run any commands anywhere
boo ALL=(ALL:ALL) ALL
通常還是建議將使用者添加至 sudo
使用者組,然後賦予 sudo
組成員權限,而不是直接對具體某個使用者進行提權。
總結#
查看所有使用者的列表:
$ cat /etc/passwd
查看所有使用者組:
$ cat /etc/group
查看當前登入使用者的組:
$ groups
查看指定使用者所在的組:
$ groups usernmae
添加使用者:
$ useradd username
設定 (重置) 密碼:
$ passwd username
添加使用者組:
$ groupadd group_name
將某個使用者添加到某個組:
$ usermod -G group_name username
編輯 visudo
配置檔案:
$ sudo visudo
禁用 root 使用者登入#
1. 更改 root 使用者的 shell#
禁用 root 使用者登入的最簡單方法是將其 shell 從 /bin/bash 或 /bin/bash(或任何其他允許使用者登入的 shell)更改為 /sbin/nologin,在 /etc/passwd 檔案,你可以使用任何你喜歡的命令行編輯器打開該檔案進行編輯
> vim /etc/passwd
更改行:
root:x:0:0:root:/root:/bin/bash
to
root:x:0:0:root:/root:/sbin/nologin
當 root 使用者登入,將收到消息 This account is currently not available. 這是預設消息,但是,你可以更改它並在檔案中設定自訂消息 /etc/nologin.txt.
此方法僅對需要 shell 進行使用者登入的程式有效 sudo, ftp 和 email 客戶端可以存取 root 帳戶。
2. 通過控制台設備 (TTY) 禁用 root 登入#
第二種方法使用 PAM 模組呼叫 pam_securetty,僅當使用者登入 secure TTY,如列表中所定義 /etc/securetty.
上面的檔案允許你指定哪個 TTY 允許 root 使用者登入的設備,清空此檔案可防止在連接到電腦系統的任何設備上進行 root 登入。
創建一個空檔案
> mv /etc/securetty /etc/securetty.orig
> touch /etc/securetty
> chmod 600 /etc/securetty
這種方法有一定的局限性,它只影響登入、顯示管理器(即 gdm, kdm 和 xdm) 和其他啟動 TTY 的網路服務。su、sudo、ssh 等程式以及其他相關的 openshell 工具都可以存取 root 帳戶。
3. 禁用 SSH Root 登入#
訪問遠程伺服器或 VPS 的最常見方式是通過 SSH 並阻止 root 使用者在其下登入,你需要編輯 /etc/ssh/sshd_config 檔案。
> vim /etc/ssh/sshd_config
然後取消註釋 PermitRootLogin
(如果已註釋) 並將其值設置為 no
完成後,保存並關閉檔案。然後重新啟動 sshd 服務以應用最近的配置更改。
> systemctl restart sshd
OR
> service sshd restart
你可能已經知道,此方法僅影響 openshell 工具集,將阻止 ssh、scp、sftp 等程式存取 root 帳戶。
4. 通過 PAM 限制對服務的根訪問#
Pluggable Authentication Modules (PAM 簡而言之)是一種在 Linux 系統上的集中式、可插拔、模組化和靈活的身份驗證方法。PAM,通過 /lib/security/pam_listfile.so 模組,在限制特定帳戶的權限方面具有很大的靈活性。
上述模組可用於引用不允許通過某些目標服務(例如 login、ssh 和任何 PAM 感知程式)登入的使用者列表。
在這種情況下,我們希望通過限制對登入和 sshd 服務的存取來禁用 root 使用者對系統的存取。首先打開並編輯目標服務中的檔案 /etc/pam.d/ 目錄如圖。
> vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd
接下來,在兩個檔案中添加以下配置。
auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/sshd/deniedusers
完成後,保存並關閉每個檔案。然後創建純檔案 /etc/sshd/deniedusers 每行應該包含一個項目,而不是世界可讀的。
在其中添加名稱 root,然後保存並關閉它。
> vim /etc/sshd/deniedusers
還要為此設置所需的權限。
> chmod 600 /etc/sshd/deniedusers
此方法僅影響支持 PAM 的程式和服務。你可以通過 ftp 和電子郵件客戶端等阻止對系統的 root 存取。
有關更多信息,請參閱相關手冊頁。
$ man pam_securetty
$ man sshd_config
$ man pam