用戶身份與文件權限---su命令與sudo服務
1,su 命令
su 命令可以在當前用戶不退出的情況下切換用戶身份
- root 管理員切換普通用戶不需要密碼驗證
- 普通用戶切換到 root 管理員就需要進行密碼驗證
[root@study doc]# su - chen
Last login: Thu Dec 20 15:23:58 CST 2018 on pts/0
[chen@study ~]$ id
uid=1000(chen) gid=1000(chen) groups=1000(chen)
su 命令與用戶名之間有一個減號(-),這將完全切換為新用戶,即把環(huán)境變量也變更為新用戶的相應信息,而不保留原始信息
2,sudo 命令
sudo 命令把特定命令的執(zhí)行權限賦予給定用戶,避免泄露 root 管理員密碼
sudo 服務中的可用參數(shù)以及作用
-
-h:列出幫助信息 -
-l:列出當前用戶可執(zhí)行的命令 -
-u用戶名或UID值:已指定的用戶身份執(zhí)行命令 -
-k:清空密碼的有效時間,下次執(zhí)行 sudo 時需要再次進行密碼驗證 -
-b:在后臺執(zhí)行指定的命令 -
-p:更改詢問密碼的提示語
sudi 命令功能:
- 限制用戶執(zhí)行指定的命令
- 記錄用戶執(zhí)行的沒一條指令
- 配置文檔(
/ettc/sudioers)提供集中的用戶管理、權限與主機等參數(shù) - 驗證密碼后5分鐘內(默認值)無須再讓用戶再次驗證密碼
visudo 命令
只有 root 管理員才可以使用
visudo命令編輯服務的配置文件
sudo命令提供 visudio 命令來配置用戶權限,避免直接修改配置文件時可能出現(xiàn)的問問題。且這條命令在配置用戶權限時將禁止多個用戶同時修改sudoers配置文件,還可以對配置文件內的參數(shù)進行語法檢查,并在發(fā)現(xiàn)參數(shù)錯誤時進行報錯。
示例1:
在下方所示位置增加普通用戶 chen 可執(zhí)行命令權限
93行添加信息為:
誰可以使用 允許使用的主機=(以誰的身份) 可執(zhí)行命令的列表
[root@study ~]# visudo
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 chen ALL=(ALL) ALL ## 添加普通用戶 chen 的信息
使用 sudo -l 查看 chen 的所有可執(zhí)行命令
注意:下面命令驗證的是該普通用戶的命令,而不是root管理員的密碼
[root@study ~]# su - chen
Last login: Thu Dec 20 18:30:13 CST 2018 on pts/0
[chen@study ~]$ sudo -l
[sudo] password for chen: # 輸入用戶 chen 的密碼,而不是 root 的
Matching Defaults entries for chen on study:
!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User chen may run the following commands on study:
(ALL) ALL
驗證1:普通用戶查看 /root 目錄
[chen@study ~]$ ls /root
ls: cannot open directory /root: Permission denied
[chen@study ~]$ sudo ls /root
backup.taar.gz linux mysql80-community-release-el7-1.noarch.rpm test
示例2:僅賦予普通用戶 cat 命令root的權限
生產(chǎn)環(huán)境不允許某個普通用戶擁有整個系統(tǒng)所有命令的最高權限,因此ALL參數(shù)不適合,因此只能賦予普通用戶具體的命令以滿足工作需求,受到必要的權限舒服
注意:如果需要讓某個用戶以 root 管理員的身份執(zhí)行命令,一定要給出命令的絕對路徑(可用 whereis 命令查找)
[root@study ~]# whereis cat
cat: /usr/bin/cat /usr/share/man/man1/cat.1.gz
[root@study ~]# visudo
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
chen ALL=(ALL) /usr/bin/cat ## 添加普通用戶 chen 的信息
驗證2:普通用戶用命令 cat 查看 /etc/shadow 文件
[root@study ~]# su - chen
Last login: Fri Dec 21 14:07:12 CST 2018 on pts/1
[chen@study ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[chen@study ~]$ sudo cat /etc/shadow
[sudo] password for chen: # 此除輸入該普通用戶的密碼
root:$6$nivk2N7o$zTJ/PFjcpwlpL80CWjfQCnIhM7K75Oc0PU/RYOWLJBl7/XZ9spuJv4ERQ60bTCh0uZp1FMOwqkV7OO.4N7GgG0:17687:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
... ... ... 省略下方內容
示例3:去除使用sudo命令時的密碼驗證
[root@study ~]# visudo
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 chen ALL=NOPASSWD: /usr/bin/cat ## 添加普通用戶 chen 的信息
驗證3:清除 sudo 密碼有效時間,普通用戶再使用 cat 查看 /etc/shadow
[root@study ~]# su - chen
Last login: Fri Dec 21 14:22:58 CST 2018 on pts/1
[chen@study ~]$ sudo -k
[chen@study ~]$ sudo cat /etc/shadow
root:$6$nivk2N7o$zTJ/PFjcpwlpL80CWjfQCnIhM7K75Oc0PU/RYOWLJBl7/XZ9spuJv4ERQ60bTCh0uZp1FMOwqkV7OO.4N7GgG0:17687:0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
... ... ... 省略下方內容