su和sudo

旨在闡述CentOS中 su和sudo命令的基本用法和區別apache


知識儲備centos


1.Linux中一般不建議以root身份直接登錄,太危險了!然而以普通用戶身份登錄,在某些時候又受到權限壓制,su和sudo就是良好的解決方案;bash

2.su一般用來臨時切換到某個用戶身份,來執行一些指令;切換方式有徹底切換、不徹底切換;網絡

3.sudo一般用來以某個用戶身份來執行某些指令,執行完畢後登錄身份仍是自身,即supper do!編輯器


Su命令精要ide


su切換方式:
3d

(1) su -l root  徹底切換:會從新讀取新身份的私人配置文件,環境變量PATH等等;日誌

(2) su root  不徹底切換:不會從新讀取;blog

正常狀況下,切換到新身份後,會一直保持該身份運行着,除非使用exit命令退出新身份;
ci


幾個要點:

  1. 可使用 su -c command root切換到root身份運行完指令command後自動退出root身份,這點和sudo有點相似哦,詳情man su;

  2. 普通用戶切換到任何用戶都須要輸入密碼,只有root切換到普通用戶無需密碼;

  3. su -,su -l,su --login 都表示徹底切換,會讀取私人的小配置!


sudo命令精要


sudo的功能大體有:

(1)受權指定用戶在指定主機上運行指定的命令『who、where、do what』

(2)詳細記錄用戶基於sudo執行命令的相關日誌信息

(3)sudo具備時效性認證:即用戶第一次執行sudo會要求輸入密碼驗證身份,這個憑據會保存一段時間,默認是5分鐘,5分鐘內不須要再次輸入密碼,「檢票系統」


sudo命令:

 被受權用戶應該以sudo命令來運行被受權運行的命令:

 su -  不加 默認是su到管理員,須要root密碼

 sudo [OPTIONS] COMMAND

 sudo su -  無需管理員密碼 哈哈,理解一下 挺有意思

   -l: 查看當前用戶可執行的sudo命令;

   -k: 清除此前記憶下的「令牌」;

   -u USERNAME COMMAND:以指定用戶運行COMMAND命令;


sudo的配置文件:/etc/sudoers

前面所說,sudo能夠定義哪些用戶,在哪些主機上,作哪些指令。這些定義其實保存在配置文件/etc/sudoers上,建議使用專用的編輯器編輯,即visudo命令『有語法檢查等功能』


sudo配置文件語法


sudoers配置文件語法很簡單,以下

wKioL1ZEGj2TzUZGAAApPysW0-s939.png

例如,指定普通用戶centos,容許在任何主機上以root身份執行fdisk命令

wKioL1ZEG8DzD5_pAABHOs0SKrQ922.png


可是,若是要爲多個用戶、不一樣組用戶指定受權,一條條添加是否顯得太過麻煩呢?尤爲是當一個用戶能夠經過sudo執行多條command命令的時候。其實可使用 別名的方式 來受權,具體用法以下:

wKioL1ZEIOzDGLYGAAGcMkM1z0Y910.png

例如,指定容許用戶centos,用戶組apache,容許在任何主機上以root身份執行fdisk,useradd系統管理命令,和wget,ifconfig等網絡管理命令。那麼該如何定義呢?

wKioL1ZEIrOid0g5AAA7lUvwIA0989.png

幾個要點:

  1. 別名的名字,必須並且必定是大寫字符串 

  2. 別名之間能夠相互嵌套,好比說User_Alias A = apache,B 這裏的B是另一個User_Alias

  3. 合理規劃好別名,合理嵌套好別名!

  4. 前面提到sudo有「檢票系統」,那麼一個受權的命令到底是否須要檢票,是根據該命令的標籤來決定的,好比下面

wKiom1ZEI93DJhKYAAAP2ZA7B6Y047.png

這意味着centos這個用戶經過sudo 能夠在任何主機上以root身份運行fdisk命令(須要檢票,出示一次票據後默承認以維持5分鐘哦),而運行wget是無需出示票據的

5. 請注意,受權的CMD1 CMD2 這些可sudo執行的命令,建議使用絕對路徑!

6. 使用visudo修改後配置文件後,當即生效


練習:


一、受權centos用戶能夠運行fdisk命令完成磁盤管理,以及使用mkfs或mke2fs實現文件系統管理;


受權前:

wKioL1ZEJojDz_wrAAArPHoyVPE305.png

修改sudo配置文件:

#visudo
centos  ALL=(root) /sbin/fdisk, /sbin/mkfs.ext4

受權後:

wKiom1ZEK3qxXmRLAABHzKNmEMc465.png

wKioL1ZEK7DRmM52AABtFXnQoIw239.png


二、受權gentoo用戶能夠運行邏輯卷管理的相關命令;

和邏輯卷相關的命令有

顯示相關pvs、vgs、lvs

掃描相關pvscan、vgscan、lvscan

建立相關pvcreate、vgcreate、lvcreate


編輯sudo配置文件:

#visudo
Cmnd_Alias VGCMDS= /sbin/pvs, /sbin/vgs, /sbin/lvs, /sbin/pvscan, /sbin/vgscan, /sbin/lvscan, /sbin/pvcreate, /sbin/vgcreate, /sbin/lvcreate
centos ALL=(root) VGCMDS

wKioL1ZEL-WTFbgoAAAvGYoGRCA170.png這裏遇到的一些問題:

  1. 在定義Cmnd_Alias時,我嘗試了/sbin/{vgs,lvs}的寫法,發現不能識別,失敗!

  2. 在驗證的時候,老是不成功,最後發現沒有清空憑據,sudo -k

  3. 調查發現vgs、lvcreate等等VG相關命令,其實本質都是指向/sbin/lvm的軟連接,可是無需受權/sbin/lvm 也是能夠執行這些VG指令的

相關文章
相關標籤/搜索