sudo命令的使用

在linux系統中,有些普通用戶須要藉助root賬號來執行一些操做,但咱們並不能把root密碼給普通用戶,就有了sudolinux

sudo能夠臨時切換到指定賬號進行操做web

使用方法:vim

  sudo [ -u 用戶賬號] 須要執行的命令;切換到root時,能夠直接執行sudo 執行命令 便可;網絡

  sudo -l :列出全部能夠執行的命令
運維

使用條件:ide

  必須以root身份執行visudo,添加須要執行sudo命令的用戶;
測試

  執行visudo,實際上修改的是/etc/sudoers文件;ui

  爲何要使用visudo,而不直接使用vim /etc/sudoers呢?這是因數visudo在修改完成後能夠對語法進行檢查
spa

  使用visudo -c進行語法檢查,當sudoers文件有語法錯誤時,全部的sudo命令都沒法使用
orm

修改配置:

  [root@web1 ~]# visudo

  root    ALL=(ALL)       ALL   <==找到這一行

  liu     ALL=(ALL)       ALL   <==新增的行,保存退出

  wKiom1ae5UXAIHfbAAAMKKfWavc517.png

  用戶賬號:表示系統中哪一個賬號可使用sudo命令

  第一個ALL:登陸者來源的主機名,表示這個賬號能夠從哪一臺主機鏈接過來,ALL表示任意主機

  第二個ALL:可切換的身份,表示此賬號能夠切換哪一個賬號進行操做,ALL表示能夠切換成任何用戶

  第三個ALL:可執行的命令,表示此賬號能夠執行哪些命令,ALL表示能夠執行任何命令;

  注意:在大多數狀況下,不能爲普通用戶設置所有命令的權限,要讓用戶擁有一個或者幾個權時,ALL能夠換成此命令的絕對路徑,有多個命令時,中間以逗號分開,但必須是全路徑

  好比只有修改密碼的權限時,但絕對不能修改root用戶的密碼:

  liu ALL=(ALL) !/usr/bin/passwd,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root

  用!(感嘆號)表示排除此命令

進行測試:

  wKiom1aeCiTwN5OtAABau2uht8k525.png

結果:

  從上圖中能夠看到以普通用戶liu登陸時,執行sudo命令建立test2目錄,其屬主和屬組均爲root

sudo免密碼執行命令:

  每次執行sodu命令都須要輸入用戶密碼才能執行,那怎麼能夠作到執行sudo不輸入密碼呢?

  liuwei  ALL=(ALL)       NOPASSWD:/usr/sbin/useradd

  在給定可執行的命令時,在前邊添加NOPASSWD


有時咱們須要爲不少用戶添加sudo權限,此時能夠經過組來實現

前提:

  把須要執行一樣的權限的普通用戶,添到同一個組中

  把用戶wei,cui同時加入到組liu中,此組liu中就有liu,wei,cui3個普通用戶

  wKiom1ae5mvw6xr7AAANpF63vBw858.png

修改配置文件:

  #visudo    把以前添加的用戶liu獨有權限刪除,添加組liu

  wKiom1ae50qCG×××AAAzjrRmi_c818.png

  找到圈中的這一行,把「wheel」改成你本身設定的組,我這邊改成組liu,保存退出進行測試

  wKiom1ae556QTRkMAAAKwHueAys340.png

檢查語法:

  #visudo -c

測試:

  分別切換到用戶liu,wei,cui進行測試  注意:用戶第一次用sudo命令時會收到一些提示

  wKiom1ae6kmTLkkmAAAN0hZp2_M309.png

  wKioL1ae6pCByhJAAAAF8k2hA-w454.png

  wKioL1ae6qCx7eQBAAAo6k7LYII892.png

  查看上面3文件的屬主屬組,能夠看到都爲root,說明測試成功

  wKioL1ae6wbxfprSAAAUYDllN6s686.png

  之後若是想要增長或者刪除某個用戶sudo權限時,只須要將此用戶添加到或者移除此組就能夠了

思考:

  使用sudo命令切換用戶,老是提示輸入本身的密碼才能夠成功,那有沒有辦法不輸入密碼呢?

  wKiom1ae7-eyppMpAAAKgB4X8m0040.png

  找到此行,把前邊的#號去掉,百分號後邊添加你須要設定的組便可

測試:能夠看到用戶組liu中的全部用戶,再執行sudo操做時,能夠不用輸入密碼了  

  wKioL1ae8cjgnpw4AAAlLYV8emU353.png  

  wKiom1ae8ZzyjGsLAAAkWD1B5So673.png

  wKiom1ae8YGw91kvAAAhys6OI3w581.png

總結:

  要給定sudo權限的用戶,必須是你信任的用戶;


別名設置:

  用戶或者組的別名 --> User_Alias ADMINS = jsmith,mkike,%groupname (注:組前邊須要添加%)

  主機別名 --> Host_Alias FILESERVERS = fs1,fs2

  能夠切換的用戶角色別名 --> Runas_Alias OP = root

  命令別名 --> Cmnd_Alias SERVICES = /sbin/service,/sbin/chkconfig

  什麼狀況才使用別名?

  答:在工做中通常有多個系統用戶,須要分類,分層次管理用戶的時候

別名實際實例:

  工做需求:
  開發人員:User_Alias KAIFA_ADMINS = kaifa01,kaifa02
    命令權限:KAFACMD
    身份權限:KAIFA_ADMINS
  運維人員:User_Alias OLD_ADMINS = oldboy,oldgirl,%sa
    命令權限:USERCMD,NETMAGCMD,CTRLCMD,DISKCMD
    身份權限:OP1
  網絡工程師:User_Alias OLD_NETADMINS = leo,maya
    命令權限:NETMAGCMD
    身份權限:OP2

  #用戶分組 --> 相同崗位的人放在一個組
  User_Alias OLD_ADMINS = oldboy,oldgirl,%sa
  User_Alias OLD_NETADMINS = leo,maya
  User_Alias KAIFA_ADMINS = kaifa01,kaifa02
  #相似命令分組
  Cmnd_Alias USERCMD = /usr/sbin/useradd,/usr/sbin/userdel,/usr/bin/passwd [A-Za-z]*,/bin/chown,/bin/chmod
  Cmnd_Alias DISKCMD = /sbin/fdisk,/sbin/parted
  Cmnd_Alias NETMAGCMD = /sbin/ifconfig,/etc/init.d/network
  Cmnd_Alias CTRLCMD = /usr/sbin/reboot,/usr/sbin/halt
  Cmnd_Alias KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat
  #角色
  Runas_Alias OP1 = root,oldboy
  Runas_Alias OP2 = root,oldgirl
  #受權
  KAIFA_ADMINS    ALL=(OP1)       KAFACMD
  OLD_ADMINS      ALL=(OP1)       USERCMD,DISKCMD,NETMAGCMD,CTRLCMD
  OLD_NETADMINS   ALL=(OP2)       NETMAGCMD
sudo審計:

  只記錄用戶使用sudo時執行的命令;

  只須要向/etc/sudoers文件中添加以下內容,便可實現sudo審計

  echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers

相關文章
相關標籤/搜索