我創建了一個新用戶,adduser
但是當我嘗試從他的帳戶中執行 sudo 時,我得到了xxxx * is not in the sudoers file. This incident will be reported.
.
所以我開始篡改visudo
命令......
我發現 root 帳戶具有以下配置:
root ALL=(ALL:ALL) ALL
但我不想為我的新用戶重複這個...
我希望我的用戶 xxxx 沒有 root 存取權限,除非使用 sudo。
使用 sudo 時,我希望 xxxx 使用者提示輸入 root 密碼,而不是他自己的密碼!
謝謝
使用 debian 10
VM,僅 ssh
答案1
我希望我的使用者 xxxx 沒有 root 存取權限,除非使用 sudo。
sudo
這實際上是普通用戶的正常狀態:除了配置以指定允許哪些命令之外,您無需執行任何操作。
root ALL=(ALL:ALL) ALL
sudo
該行的存在只是為了允許您在已經切換到 root 使用者的情況下使用。授予非 root 使用者權限的重要一行是這一行:
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
(在某些 Linux 發行版中,作業系統安裝過程中產生的第一個常規使用者可能會成為該群組的成員sudo
,從而自動為其啟用root 存取權。這是例外情況,並非所有使用者的預設情況。 )
sudoers 文件中權限規範的基本形式是
<who> <where>=(<as_who>) <what>
<who>
指定哪些使用者可以使用此條目。它可以是一個使用者、一個群組(以 % 符號為前綴)或一個先前定義的 User_Alias(基本上是一長串使用者和/或群組的簡寫)以及其他一些東西。<where>
可以是主機名稱:它將此項目限制為特定係統。它在企業環境中可能很有用,在企業環境中,您將集中管理的標準sudoers
檔案放在所有主機上,但通常將其指定為ALL,以避免主機名稱解析不起作用或系統配置錯誤時出現問題。(<as_who>)
定義可以運行命令的使用者帳戶。預設值為 root,但您也可以限制用戶,例如只能在某些特定的非 root 應用程式帳戶上使用 sudo 運行命令。<what>
是允許的命令(或多個命令,用逗號分隔)。
還有各種標籤和選項,但sudoers
簡而言之,以上是文件的重要部分。
使用 sudo 時,我希望 xxxx 使用者提示輸入 root 密碼,而不是他自己的密碼
這是可能的,而且很容易做到。如果您將這些行新增至您的sudoers
文件:
Defaults:xxxx rootpw,timestamp_timeout=0
xxxx ALL=(ALL:ALL) ALL
然後對於用戶xxxx
(和僅有的對於他們),該sudo
命令將要求輸入 root 密碼 - 並且它會詢問每次使用該sudo
命令,而不是允許最多 15 分鐘使用該sudo
命令而無需再次詢問密碼的預設行為。
如果您打算監視使用者並在該使用者需要時親自輸入 root 密碼,這一點很重要 - 如果您錯過了該timestamp_timeout=0
選項,使用者可能會首先要求您輸入 root 密碼以進行某些合法操作,然後進行一些幹擾在接下來的15 分鐘內為您提供幫助,在此期間他們將能夠使用sudo
他們想要的任何東西。
但請注意如果您告訴使用者 root 密碼,他們也可以透過該su
命令使用它,除非您對 應用非預設限制su
。經典的(通常也是唯一的)限制方法是要求使用者成為特定群組的成員,否則他們將根本su
無法使用。su
若要套用此限制,請編輯/etc/pam.d/su
並在開頭附近找到此部分:
# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth required pam_wheel.so
#
只需從最後一行的開頭刪除,該su
命令將僅可由該群組的成員使用root
。