sudo

sudo命令詳解

sudo命令是Linux上的一個非常有用的工具,它允許系統管理員分配給普通用戶一些合理的“權利”,讓他們執行一些只有超級用戶或其他特許用戶才能完成的任務,比如:運行一些像mount,userdel,useradd之類的命令,或者編輯一些系統配置文件,像/etc/passwd,/etc/samba/smb.conf等。這樣以來,就不僅減少了root用戶的登陸次數和管理時間,也提高了系統安全性。


一、sudo命令的特點

 1. sudo能夠限制指定用戶在指定主機上運行某些命令。

 2. sudo可以提供日誌,忠實地記錄每個用戶使用sudo做了些什麼,並且能將日誌傳到中心主機或者日誌服務器。

 3. sudo爲系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機。它默認的存放位置是/etc/sudoers。

 4.sudo使用時間戳文件來完成類似“檢票”的系統。當用戶執行sudo並且輸入密碼後,用戶獲得了一張默認存活期爲300秒的“入場券”(默認值可以在編譯的時候改變)。超時以後,用戶必須重新輸入密碼。


二、配置文件

 1)授權機制:sudo的授權配置文件,/etc/sudoers


  對於此配置文件,共分爲兩類內容:

1.別名的定義:定義內建變量;

2.用戶規格:其實就是授權項,其中可以調用定義過的別名;


  2)用戶規格(授權項):

每行只能有一個授權項;

其格式爲:

who  where=(whom)  what

user client=(runas) commands

注意:通過編輯/etc/sudoers文件完成的授權,只能通過sudo命令來啓用;


3)/etc/sudoers文件的編寫格式:

who: 此次sudo配置的授權目標用戶;

username:單個用戶的用戶賬戶名稱;

#uid:單個用戶的UID;

%groupname:指定組內的所有用戶賬戶;

%#gid:以"gid"爲GID的組內的所有用戶賬戶;

user_alias:事先定義過的用戶賬戶的別名;


where:定義被授權訪問的客戶端主機;

ip/hostname:單個主機;

Network Address:網絡地址;

host_alias:事先定義過的主機的別名;


whom:授權用戶後續命令的運行者的真實身份;通常是root;


what:此次授權能夠運行的命令;

command:單個命令;

directory:指定目錄下所有的命令;

sudoedit:特殊命令,用於授權其他用戶可以執行sudo命令,並且可以編輯/etc/sudoers文件;

cmnd_alias:實現定義過的命令的別名;


三、命令參數

 sudo [option]... command

 -u user:以指定的用戶身份運行命令;

 -h  會顯示版本編號及指令的使用方式說明

 -l  顯示出自己(執行sudo的使用者)的權限

 -v  因爲sudo在第一次執行時或是在 N 分鐘內沒有執行(N 預設爲5)會問密碼,這個參數是重新做一次確認,如果超過N分鐘,也會問密碼

 -k  將會強迫使用者在下一次執行sudo時問密碼(不論有沒有超過N分鐘)  

 -b  將要執行的指令放在背景執行

 -p  prompt 可以更改問密碼的提示語,其中%u會代換爲使用者的帳號名稱,%h會顯示主機名稱


四、定義別名的方法

 Alias_Type ALIASNAME = item1, item2, ...


 Alias_Type:

User_Alias:

Host_Alias:

Runas_Alias:

Cmnd_Alias:


 ALIASNAME:別名的名稱必須全部使用大寫字母;


 User_Alias USERADMINUSERS = tom, jerry, centos, suse, %myclass


 Cmnd_Alias USERADMINCOMMANDS = /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod


 USERADMINUSERS ALL=(root) USERADMINCOMMANDS


 常用的標籤:

PASSWD

NOPASSWD


 Cmnd_Alias USERADMINCOMMANDS = NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/userdel, /usr/bin/passwd [a-zA-Z0-9]*, ! /usr/bin/passwd root, /usr/sbin/usermod


 這樣NOPASSWD後面的命令在執行的時候是不需要輸入密碼的,PASSWD後面的命令執行的時候則需要輸入密碼。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章