在Linux和其餘類Unix操做系統中,只有root用戶能夠運行全部命令並在系統上執行某些關鍵操做,如安裝和更新,刪除包,建立用戶和組,修改重要的系統配置文件等。然而,承擔root用戶角色的系統管理員能夠容許其餘正常系統用戶在sudo命令和幾個配置的幫助下運行某些命令以及執行包括上述的一些重要系統操做。或者,系統管理員能夠共享root用戶密碼(這不是推薦的方法),以便正常系統用戶能夠經過su命令訪問root用戶賬戶。 |
sudo容許用戶以root用戶身份(或另外一個用戶)執行安全策略指定的命令:它讀取並解析/etc sudoers,查找調用的用戶及其權限,而後提示調用用戶輸入密碼(一般是用戶的密碼,但也能夠是目標用戶的密碼,也可使用NOPASSWD取消密碼驗證),以後,sudo建立一個子進程,在其中調用setuid()切換到目標用戶next,它執行一個shell或在上面的子進程中做爲參數給出的命令。
如下是十個/etc/sudoers文件配置,以使用Defaults條目修改sudo命令的行爲。linux
sudo cat /etc/sudoers | less
1.設置安全路徑shell
這是用於每一個使用sudo運行的命令的路徑,它有兩個重要性:
在系統管理員不信任sudo用戶具備安全的PATH環境變量時使用
要分離「根路徑」和「用戶路徑」,只有由exempt_group定義的用戶不受此設置的影響。
要設置它,請添加行:安全
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2.在TTY用戶登陸會話上啓用sudobash
要啓用從真實tty調用sudo,而不是經過cron或cgi-bin腳本等方法調用,請添加如下行:less
Defaults requiretty
3.運行Sudo命令使用ptyui
有些時候,攻擊者可使用sudo運行惡意程序(例如病毒或惡意軟件),這將再次分叉保留在用戶的終端設備上的後臺進程,即便在主程序已經完成執行時。操作系統
爲了不這種狀況,您能夠將sudo配置爲僅使用use_pty參數從psuedo-pty運行其餘命令,不管I /O日誌是否已打開,以下所示:.net
Defaults use_pty1
4.建立Sudo日誌文件命令行
默認狀況下,sudo日誌經過syslog(3)。可是,要指定自定義日誌文件,請使用logfile參數,如:日誌
Defaults logfile="/var/log/sudo.log"
要在自定義日誌文件中記錄主機名和四位數年份,請分別使用log_host和log_year參數,以下所示:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
5.記錄Sudo命令輸入/輸出
log_input和log_output參數容許sudo在僞tty中運行命令,並記錄全部用戶輸入和全部輸出發送到屏幕。
默認I / O日誌目錄爲/var/log/sudo-io,若是有會話序列號,則存儲在此目錄中。您能夠經過iolog_dir參數指定自定義目錄。
Defaults log_input, log_output1
支持一些轉義序列,例如%{seq},其擴展爲單調遞增的基礎36序列號,例如000001,其中每兩個數字用於造成新的目錄,例如。00/00/01,以下例所示:
[root@linuxprobe ~]# cd /var/log/sudo-io/ [root@linuxprobe sudo-io]# ll total 8 drwx------ 3 root root 4096 Jan 12 18:58 00 -rw------- 1 root root 7 Jan 12 19:08 seq [root@linuxprobe sudo-io]# cd 00/00/06/ [root@linuxprobe 06]# ls log stderr stdin stdout timing ttyin ttyout [root@linuxprobe 06]# cat log 1484219333:root:root::/dev/pts/0 /root /bin/bash
6.講解Sudo用戶
要講授sudo用戶關於系統上的密碼使用,請使用以下所示的lecture參數。
它有3個可能的值:
always - 老是講一個用戶。
once - 只在用戶第一次執行sudo命令時使用(當沒有指定值時使用)
never - 從不講授用戶。
Defaults lecture="always"
此外,您可使用lecture_file參數設置自定義講義文件,在文件中鍵入相應的消息:
Defaults lecture_file="/path/to/file"
7.輸入錯誤的sudo密碼時顯示自定義消息
當用戶輸入錯誤的密碼時,命令行上將顯示特定的消息。默認消息是「sorry,try again」,您可使用badpass_message參數修改消息,以下所示:
Defaults badpass_message="Password is wrong, please try again,thank you!"
8.增長sudo密碼嘗試限制
參數passwd_tries用於指定用戶嘗試輸入密碼的次數。 默認值爲3:
Defaults passwd_tries=5
9.讓Sudo輸入錯誤的密碼時輸入提示
Defaults insults
10.瞭解更多Sudo配置