該用戶目前不可用 - 但允許該用戶運行腳本

該用戶目前不可用 - 但允許該用戶運行腳本

我在 /etc/passwd 中建立了特殊使用者:

secure:x:2000:2000:secure:/bin:/usr/sbin/nologin

我不想允許該使用者登入(透過控制台、ssh、ftp,任何方式)。

他只是透過以下方式運行一個腳本:

sudo su secure -c '/home/someuser/secure.script'

但它給了我This user is currently not available.。如何將其設定為能夠以這種方式運行腳本,但阻止該使用者登入(控制台、ssh、ftp...)系統?


我注意到,當我/usr/sbin/nologin在命令列上輸入時,計算機會響應This account is currently not available..

答案1

這是 的典型用例sudo

您正在混合sudo允許以另一個使用者身分執行命令並且高度可配置(您可以選擇性地指定哪個使用者可以以哪個使用者身分執行哪個命令)以及su如果您知道密碼(或是 root)則切換到另一個使用者。su始終運行用 編寫的 shell /etc/passwd,即使su -c使用了。因為這su/usr/sbin/nologin.

你應該使用

sudo -u secure /home/someuser/secure.script

由於是sudo可配置的,您可以控制誰可以使用此命令以及他/她是否需要輸入密碼才能運行它。您需要/etc/sudoers使用編輯visudo來執行此操作。 (編輯 /etc/sudoers 時要小心,並始終使用 visudo 來執行此操作。語法並不簡單,一個錯誤可能會將您鎖定在 root 帳戶之外。)

sudoers 中的這一行允許群組中的任何人somegroup運行命令secure

%somegroup    ALL=(secure) /home/someuser/secure.script

這允許群組中的任何人無需輸入密碼somegroup即可運行命令:secure

%somegroup    ALL=(secure) NOPASSWD: /home/someuser/secure.script

這允許user1運行命令而secure無需輸入密碼:

user1    ALL=(secure) /home/someuser/secure.script

答案2

我發現主要問題是“ /usr/sbin/nologin”,/etc/passwd 當我想在這種情況下執行su時,它必須-s /bin/bash在裡面,所以例如:su -s /bin/bash -c '/home/someuser/secure.script' secure

答案3

su正在使用 中指定的 shell /etc/passwd

您不需要su與 一起使用sudo

因此不要susudo: use混合sudo -u secure '/home/someuser/secure.script'

相關內容