Thursday, April 25, 2024

使用sudo來賦予普通用戶root的權限

  常規來說,root的權限是不可隨意分割的,所以很難既給某個用戶完成一件任務的權力,比如說備份,而又不給這個人自由運行系統的權力。如果把root給多個人去使用,顯然是個不安全的做法。
  針對這個問題,現在廣泛的採用SUDO的方式來解決。
  所謂的SUDO就是以普通用戶的身份登錄到系統,當需要完成某項任務時(假設此任務普通用戶無權使用),在管理員root的授權下來完成。呵呵,對了,有點像WINDOWS中的委派。一旦用戶得到授權後就可以去做原本自己不能做的事情,從而幫助管理員管理,減輕管理員的負擔。
  執行sudo時,它會讀取文件/etc/soduers,這個文件列出了授權使用sudo的人以及他們在每台主機上可以運行的命令。如果提供給sudo 的命令允許運行,那麼sudo就提示輸入這個用戶自己的口令並執行命令。在隨後的5分鐘內,再次使用sudo則不需輸入口令。sudo沒有定義好的日誌文件,所以如果你要使用sudo的日誌,你還得自己去配置一下。至於怎麼去配咱們以後討論。
  如果你要配置sudo,建議你使用visudo來配置/etc/sudoers文件,它會檢查是否有人在同時編輯修改此文件。以下是一個例子:
  ## Host Aliases
  Host_Alias FILESERVERS = fs1, fs2
  Host_Alias MAILSERVERS = smtp, smtp2
  ## Networking
  Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
  ## Allow root to run any commands anywhere
  root ALL=(ALL) ALL
  tom,z3 FILESERVERS=ALL
  jerry MAILSERVERS=/usr/sbin/tcpdump:FILESERVERS=(L4)DUMP
  w5 ALL=(ALL)ALL,!SHELLS
  上面第一部分是用來定義主機的,如果不定義那麼你就得在第三部分手動寫入。第二部分是用來定義服務的,如果不定義那麼你就得在第三部分手動寫入。建議你使用這種別名的方式來定義你的“操作”,這樣sudoers的可讀性更強。
  第三部分是關於權限的定義,也就是說誰可以用sudo幹什麼事情。其中格式如下:
  適用的用戶 要注意的主機=(轉換成誰的身份)可以使用什麼命令
  如果沒有定義括號中的內容,則表示只以root身份執行相應操作。!表示“除什麼以外”。
  當普通用戶,例如tom,登錄到系統要執行本來沒有權限執行的操作時,他可以鍵入如下命令: 
  sudo su –
  然後鍵入自己的密碼就可以了。
  Alias主要分成4種
  Host_Alias
  Cmnd_Alias
  User_Alias
  Runas_Alias
  1) 配置Host_Alias:就是主機的列表
  Host_Alias HOST_FLAG = hostname1, hostname2, hostname3
  2) 配置Cmnd_Alias:就是允許執行的命令的列表
  Cmnd_Alias COMMAND_FLAG = command1, command2, command3
  3) 配置User_Alias:就是具有sudo權限的用戶的列表
  User_Alias USER_FLAG = user1, user2, user3
  4) 配置Runas_Alias:就是用戶以什麼身份執行(例如root,或者oracle)的列表
  Runas_Alias RUNAS_FLAG = operator1, operator2, operator3
  5) 配置權限
  配置權限的格式如下:
  USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG
  如果不需要密碼驗證的話,則按照這樣的格式來配置
  USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG

  使用sudo的好處
  1, 由於有日誌可以提高安全審計的能力
  2, 操作員不需要不受限制的root特權就能完成許多任務
  3, 保證root密碼的安全
  4, 比使用su快
  5, 不需要改變root密碼就能收回某些權限
  6, 只需維護sudoers就可維護所以用戶的特權列表
  7, 降低遺留root shell的概率
  8, 可以使用單個文件來控制對整個網絡的訪問權限
  當然也有不足,比如說如果突破了能執行sudo命令的個人賬戶,就等同突破了root賬戶本身。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.