sudo

Sudo 是一個允許系統管理員授權讓普通用戶執行部分或全部root命令的工具。這樣可以減少root登陸提高系統安全性。

Sudo特點:

1.可以限制特定的用戶在特定的主機上運行指定的命令
2.有非常詳細的日誌紀錄
3.sudo使用時間戳文件來執行類似"檢票"系統。當用戶使用sudo並且輸入密碼後,用戶默認獲得了一張存活期爲5分鐘的票(這個數值可以在編譯的時候更改),超過5分鐘不用的話就需要重新輸入密碼才能使用

sudo安裝過程(略):一般系統都默認有安裝

配置文件/etc/sudoers:

以下簡略介紹該文件的配置項(root使用visudo編輯該文件)

第一部分:# Host alias specification(主機別名定義,用於定義多臺住機)
格式:Host_Alias SERVER = 192.168.0.1/255.255.255.0
      Host_Alias SERVER1 = 172.17.1.1

第二部分:# User alias specification(用戶別名定義,用於定義多組用戶)

格式:User_Alias ADMIN = test,jack,tom
      User_Alias TEST = user1

第三部分:# Cmnd alias specification (命令別名定義,定義用戶執行命令列表)

格式:Cmnd_Alias CAT = /bin/cat /etc/sudoers
      Cmnd_Alias Ls = /bin/ls /root

第四部分:# Override built in defaults(增加日誌紀錄功能)

Defaults@SERVER  log_host, logfile=/var/log/sudo.log
#爲host alise裏的主機增加一個附加日誌,如果這個日誌需要保存多年,則可使用log_year,這樣在日

志紀錄的時候將紀錄詳細的年份

下面詳細解釋配置實例:

[test@redflag test]$ sudo cat /etc/sudoers
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification
Host_Alias SERVER = 172.17.196.10 #配置主機172.17.196.10別名SERVER;Host_Alias前不能有空格
# User alias specification
User_Alias ADMIN = test,jack      #配置用戶組ADMIN,所屬用戶test,jack
# Cmnd alias specification
Cmnd_Alias CT = /bin/cat /etc/sudoers,/bin/cat /etc/shadow
Cmnd_Alias CA = /bin/ls /root
#配置命令別名CT,可以執行cat etc/sudoers,cat /etc/shadow 命令,CA可執行 la /root命令

# Defaults specification

# User privilege specification
root    ALL=(ALL) ALL
test    SERVER=CT,CA #配置test用戶可以在SERVER執行cat /etc/sudoers,/cat /etc/shadow,ls

/root 命令
# test ALL=(ALL) NOPASSWD: ALL(配置test可以執行所有的root命令,且使用sudo時不需要輸入密碼)

# Override built in defaults
Defaults@SERVER  log_host, logfile=/var/log/sudo.log
#配置日誌紀錄到主機SERVER的/var/log/sudo.log文件

# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

# Same thing without a password
# %wheel        ALL=(ALL)       NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now

日誌文件:

截取/var/log/sudo.log的一段紀錄如下:

Mar  3 15:13:14 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
    PWD=/home/test ; USER=root ; COMMAND=/bin/ls /root
Mar  3 15:13:18 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
    PWD=/home/test ; USER=root ; COMMAND=/bin/su -
Mar  3 15:13:56 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
    COMMAND=/bin/cat /etc/sudoers
Mar  3 15:14:10 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
    COMMAND=/bin/ls /root
Mar  3 16:27:30 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
    COMMAND=/bin/cat /etc/sudoers
Mar  3 16:29:47 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
    PWD=/home/test ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log

配置中碰到的問題:

1、主機名配置錯誤導致sudo不能執行和日誌紀錄。

錯誤提示:Sorry, user test is not allowed to execute '/bin/cat /etc/sudoers' as root on

localhost.localdomain.

解決:將其中的localhost改爲真實主機名字或IP即可

test    localhost=/sbin/cat /etc/sudoers
Defaults@localhost log_host /var/log/sudo.log

2、命令別名列表中命令錯誤導致sudo不能執行
錯誤提示:[jackyu@localhost jackyu]$ sudo cat /etc/sudoers
Sorry, user jackyu is not allowed to execute '/bin/cat /etc/sudoers' as root on

localhost.localdomain.

解決:由於在Cmnd alias裏定義的時候命令書寫有誤(Cmnd_Alias CAT = /bin/cat -n /etc/sudoers).
執行:sudo cat -n /etc/sudoers
[注]:不管在Cmnd alias裏還是在# User privilege specification中指定命令,使用sudo運行時必須一

摸一樣,否則將出錯。比如在Cmnd alias裏指定某用戶職能運行 /bin/cat /etc/sudoers,如果該用戶登

陸後運行 sudo /cat -n /etc/sudoers將會出錯.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章