Shell

出於安全原因禁用使用者外殼

  • December 31, 2018

我們為需要細粒度權限的自動化任務創建了幾個使用者帳戶,例如跨系統的文件傳輸、監控等。

我們如何鎖定這些使用者帳戶,使這些“使用者”沒有 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_keyswith ssh)。

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以這些使用者身份執行作業。

引用自:https://unix.stackexchange.com/questions/55106