beinan ALL=(root) /bin/chown, /bin/chmod (root)這個是干什麼的,下面的解釋沒看懂
實例一:
beinan ALL=/bin/chown,/bin/chmod
如果我們在/etc/sudoers 中添加這一行,表示beinan 可以在任何可能出現的主機名的系統中,可以切換到root用戶下執行 /bin/chown 和/bin/chmod 命令,通過sudo -l 來查看beinan 在這台主機上允許和禁止運行的命令;
值得注意的是,在這裡省略了指定切換到哪個用戶下執行/bin/shown 和/bin/chmod命令;在省略的情況下默認為是切換到root用戶下執行;同時也省略了是不是需要beinan用戶輸入驗證密碼,如果省略了,默認為是需要驗證密碼。
為了更詳細的說明這些,我們可以構造一個更復雜一點的公式;
授權用戶 主機=[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] 命令1,[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令2],[(切換到哪些用戶或用戶組)] [是否需要密碼驗證] [命令3]....
注解:
凡是[ ]中的內容,是可以省略;命令與命令之間用,號分隔;通過本文的例子,可以對照著看哪些是省略了,哪些地方需要有空格;
在[(切換到哪些用戶或用戶組)] ,如果省略,則默認為root用戶;如果是ALL ,則代表能切換到所有用戶;注意要切換到的目的用戶必須用()號括起來,比如(ALL)、(beinan)
實例二:
beinan ALL=(root) /bin/chown, /bin/chmod
如果我們把第一個實例中的那行去掉,換成這行;表示的是beinan 可以在任何可能出現的主機名的主機中,可以切換到root下執行 /bin/chown ,可以切換到任何用戶招執行/bin/chmod 命令,通過sudo -l 來查看beinan 在這台主機上允許和禁止運行的命令;
。。。。。(root)上面什麼意思,看不懂,自己測試也沒試出來,切換到任何用戶致命該命令,怎麼切換??還是說運行這個語句的時候,是以括號裡的身份運行的,-.-
這個問題很難嗎。自己都弄懂了。。。。。
(root)表示可以暫時切換到該用戶,以該用戶的身份運行相關語句,但即使可以暫時切換到root身份,依然不能使用除sudo配置文件已寫入的相關權限以外的命令。
而如果是sudo為某一用戶分配了只能root身份運行的命令, 但設置的可切換用戶中
沒有root,則該命令不能運行。(自己測試所得,不一定准確)
Eg:
/**************************************************************************/
用戶 student 可以在該主機上運行以下命令:
(root) /bin/chmod, (root) /bin/chown
[student@localhost home]$ sudo -root chmod 777 2
sudo:/etc/sudo.conf 可被任何人寫
sudo:/etc/sudoers.d 可被任何人寫
sudo:無法獲取 oot 角色的默認類型
[student@localhost home]$ sudo -u root chmod 777 2
sudo:/etc/sudo.conf 可被任何人寫
sudo:/etc/sudoers.d 可被任何人寫
[student@localhost home]$ sudo -u root useradd2
sudo:/etc/sudo.conf 可被任何人寫
sudo:/etc/sudoers.d 可被任何人寫
sudo:useradd2:找不到命令
[student@localhost home]$ sudo -u root useradd 2
sudo:/etc/sudo.conf 可被任何人寫
sudo:/etc/sudoers.d 可被任何人寫
對不起,用戶 student 無權以 root 的身份在 localhost.localdomain 上執行 /sbin/useradd 2。
[student@localhost home]$ sudo -u yz chmod 2
sudo:/etc/sudo.conf 可被任何人寫
sudo:/etc/sudoers.d 可被任何人寫
對不起,用戶 student 無權以 yz 的身份在 localhost.localdomain 上執行 /bin/chmod 2。