在普通用戶登錄中,很多需要管理員權限的命令無法執行,雖然提升了root的安全性,難免會影響了部分工作的進行,此時可以使用sudo命令進行授權,允許普通用戶在特定時間內,利用特定的身份權限去執行特定的指令。
sudo能夠授權指定用戶在指定主機上運行某些命令。如果未授權用戶嘗試使用sudo,會提示聯系管理員
sudo可以提供日志,記錄每個用戶使用sudo操作
sudo為系統管理員提供配置文件,允許系統管理員集中地管理用戶的使用權限和使用的主機
sudo使用時間戳文件來完成類似“檢票”的系統,默認存活期為5分鐘的“入場券”
普通用戶臨時切換其他用戶權限需要知道用戶的密碼,安全性大大降低,在執行完畢后,切回自身原有身份
[feng@c7 root]$ su -l root -c "hostname"
Password:
c7
[feng@c7 root]$
sudo的文件列表
軟件包 sudo-1.8.6p7-20.el7.x86_64
幫助手冊 man 5 sudoers
配置文件 /etc/sudoers
日志文件 /var/log/secure
數據庫文件 /var/db/sudo
數據庫里記錄時間戳信息:
普通用戶在使用sudo執行命令時,需要輸入自己的用戶口令,
以驗證用戶的安全性,口令的保存時間為五分鐘,
五分鐘之后執行命令需要重新輸入口令
配置文件也可以存放在文件夾/etc/sudoers.d/,針對每個非管理員用戶創建獨立的管理文件
配置文件支持通配符glob
配置文件規則
1、別名定義:不是必須的
2、授權規則:必須的
授權規則格式
用戶 登入主機=(代表用戶) 命令
示例:root ALL=(ALL) ALL
格式說明:
user:運行命令者的身份
host::通過哪些主機
(runas):以哪個用戶的身份
command::運行哪些命令
屬性
-b:在后臺執行指令;
-h:顯示幫助;
-H:將HOME環境變量設為新身份的HOME環境變量;
-k:結束密碼的有效期限,也就是下次再執行sudo時便需要輸入密碼;
-l:列出目前用戶可執行與無法執行的指令;
-p:改變詢問密碼的提示符號;
-s:執行指定的shell;
-u<用戶>:以指定的用戶作為新的身份。若不加上此參數,則預設以root作為新的身份;
-v:延長密碼有效期限5分鐘;
-V :顯示版本信息。
修改配置文件,用賬戶feng掛載光盤
第一步:編輯/etc/sudoers文件,在配置中添加授權feng掛載光盤的命令,在sudoers配置中,要執行的命令需要寫下完整的路徑。
在配置文件/etc/sudoers中,root ALL=(ALL) ALL定義了root可以執行最高權限,這條配置同時定義在root的UID不為0的時候的權限
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom
第二步:在feng賬戶登錄下,用sudo命令發起掛載授權請求,注意光盤掛載的路徑必須和配置中完全一樣,避免出錯
[feng@c7 root]$ sudo mount /dev/sr0 /mnt/cdrom
[sudo] password for feng:
mount: /dev/sr0 is write-protected, mounting read-only
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3846176 48557024 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
授權feng取消掛載光盤
授權同一個用戶可執行多條命令,在前一個命令后面用逗號 , 隔開。在umount命令中,如果后面不寫路徑,將授權取消所有的掛載
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom,/usr/bin/umount /mnt.cdrom
[feng@c7 root]$ sudo umount /mnt/cdrom
[sudo] password for feng:
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3846268 48556932 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
創建非管理員用戶的獨立授權配置文件
在文件夾/etc/sudoers.d/下,我們可以根據不同的用戶創建不同的授權配置文件文件,獨立授權,方便管理。
以下步驟重新授權feng掛載光盤和取消掛載光盤并實施命令
[root@c7 sudoers.d]#vim feng
feng ALL=(ALL) /usr/bin/mount /dev/sr0 /mnt/cdrom,/usr/bin/umount /mnt/cdrom
~
[feng@c7 root]$ sudo mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3845208 48557992 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
/dev/sr0 8086368 8086368 0 100% /mnt/cdrom
[feng@c7 root]$ sudo umount /mnt/cdrom
[feng@c7 root]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 52403200 3845208 48557992 8% /
devtmpfs 485304 0 485304 0% /dev
tmpfs 499980 84 499896 1% /dev/shm
tmpfs 499980 13528 486452 3% /run
tmpfs 499980 0 499980 0% /sys/fs/cgroup
/dev/sda5 41922560 32964 41889596 1% /app
/dev/sda1 1038336 172120 866216 17% /boot
tmpfs 100000 16 99984 1% /run/user/42
tmpfs 100000 0 100000 0% /run/user/0
語法檢查
通過visudo命令編輯配置文件,具有語法檢查功能。在配置文件中出現語法錯誤時,visudo會提示錯誤的行號,然后詢問下一步操作。
e:重新編輯
x:不保存退出
q:強制退出
[root@c7 sudoers.d]#visudo
visudo: >>> /etc/sudoers: syntax error near line 79 <<<
What now?
Options are:
(e)dit sudoers file again
e(x)it without saving changes to sudoers file
(Q)uit and save changes to sudoers file (DANGER!)
What now?
visudo加顏色
用visudo打開/etc/sudoers時,默認文本是沒有顏色,在這里可以通過設置對visudo加顏色
[root@c7 ~]#cd /etc/profile.d/
[root@c7 profile.d]#vim env.sh
export EDITOR=vim
修改獨立配置文件的權限
在/etc/sudoers.d/文件夾中,因為用戶feng的獨立授權配置文件是手動創建的,文件的全新未644,在進行語法visudo -c語法檢查的時候會提示錯誤,可以利用visudo直接修改權限
[root@c7 ~]#cd /etc/sudoers.d/
[root@c7 sudoers.d]#ll
total 4
-rw-r--r--. 1 root root 86 Sep 13 21:01 feng
[root@c7 sudoers.d]#visudo -f feng
[root@c7 sudoers.d]#ll
total 4
-r--r-----. 1 root root 85 Sep 13 22:06 feng
用戶組的權限配置
在CentOS 7配置文件中,默認的用戶組為wheel,默認可以代替所有人執行所有權限,把用戶feng加入wheel用戶組,可以代替root使用,但是這樣的權限設置是不安全的。在CentOS 6中,用戶組的配置是注釋掉的
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
[root@c7 ~]#usermod -aG wheel feng
[root@c7 ~]#su feng
[feng@c7 root]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt