如何 su 到沒有登錄 shell 的使用者?
問題
在 Debian 10 中,我想創建一個無法直接登錄的使用者。一個人應該只能通過使用
su
二進製文件來訪問使用者。在我的 Ubuntu 18.04 設置中,我確實做到了這一點,並且效果很好,但在 Debian 10 中我無法這樣做。暗示
能夠登錄的使用者將沒有使用權限
sudo
。我做了什麼
我已經使用預設 shell 設置了一個使用者
/usr/sbin/nologin
。但是當我試圖訪問這個使用者時,su --shell=/bin/bash user
我無法這樣做。最小的例子
# useradd --shell /usr/sbin/nologin locked # passwd locked Enter new UNIX password: *secret* Retype new UNIX password: *secret* passwd: password updated successfully $ su --shell /bin/bash locked Password: *secret* This account is currently not available.
為什麼這不再適用於 Debian?
編輯1:
輸出
/etc/shells
:$ cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /bin/zsh /usr/bin/zsh
編輯2:
關於我想要實現的目標的更詳細的答案:
我正在嘗試創建一個能夠通過 SSH 或使用顯示器和鍵盤登錄到電腦的使用者( user1 )。此user1使用者應具有受限權限。其中一個限制是,他不能使用
sudo
應用程序,根本不允許他這樣做。然後我有第二個使用者(user2),它將能夠使用 sudo 應用程序來執行一些配置任務,比如更改網路設置或其他一些事情。預設情況下,此使用者 2應被鎖定以登錄。所以沒有通過 SSH 登錄並且(更屬於我的問題)沒有通過監視器和鍵盤登錄。
–> 當有人想要執行某些任務時,他必須以受限user1身份登錄,將使用者更改為user2,然後允許他更改一些配置或類似的東西。
這就是我想要達到的所有情況。有一些更細粒度的細節,允許或不允許使用者做什麼。但為了盡可能簡單地描述它,我只是用 sudo 來解釋它。
如果您的使用者有登錄 shell,則您需要在 cmd 中鍵入:
su --shell=/bin/bash locked
或sudo -u locked /bin/bash
,前提是為目標使用者指定的預設 shell 列在/etc/shell
.(注意 long 選項後面有一個等號
--shell
。)然而:
- 擁有沒有登錄 shell 的使用者的關鍵在於該使用者無法以任何方式登錄,無論是直接在會話開始時還是通過另一個使用者帳戶。奇怪的是,這正是您想要實現的目標。
- 為了能夠訪問該使用者(如果它有一個登錄 shell,通過切換到其配置文件,如上所示,您通常需要
sudo
特權,或者至少能夠使用su
cmd…