出於安全原因禁用使用者外殼
我們為需要細粒度權限的自動化任務創建了幾個使用者帳戶,例如跨系統的文件傳輸、監控等。
我們如何鎖定這些使用者帳戶,使這些“使用者”沒有 shell 並且無法登錄?我們希望防止有人以這些使用者帳戶之一的身份通過 SSH 登錄。
您可以使用該
usermod
命令更改使用者的登錄 shell。usermod -s /sbin/nologin myuser
或者
usermod -s /usr/sbin/nologin myuser
如果您的作業系統不提供 /sbin/nologin,您可以將 shell 設置為 NOOP 命令,例如 /bin/false:
usermod -s /bin/false myuser
更改登錄 shell 並不一定會阻止使用者進行身份驗證(在某些檢查使用者的 shell 是否在 中提到的服務中除外
/etc/shells
)。人們可能仍然能夠對您的系統提供給 unix 使用者的各種服務進行身份驗證,並且可能仍然被授權執行某些操作,儘管可能不會直接執行任意命令。
將 shell 更改為
/bin/false
或/usr/sbin/nologin
只會阻止它們在可用於執行命令的服務(控制台登錄、ssh、telnet、rlogin、rexec…)上執行命令,因此僅影響某些服務的授權。例如
ssh
,這仍然允許他們進行埠轉發。
passwd -l
將禁用密碼身份驗證,但仍可能允許使用者使用其他身份驗證方法(如authorized_keys
withssh
)。
pam
至少在 Linux 上,您可以使用該模組pam_shells
將身份驗證或授權限制為具有允許的 shell(在 中提到的那些/etc/shells
)的使用者。對於,除了其他身份驗證方法(例如)之外,您ssh
還需要在授權(account
)級別進行身份驗證,或者您可以使用sshd
(like and friends)中的指令來執行此操作。pam
authorized_keys``sshd_config``/etc/ssh/sshd_config``AllowUsers
請注意,在全域 pam 授權中添加一些限制可能會阻止
cron
以這些使用者身份執行作業。