因為root的權限太大,所以Linux下一般不能以管理員直接登錄,或su - root去操作,這時我們就需要用到sudo這個命令去幫助我們執行一些普通用戶沒有權限的管理命令。
sudo命令的特點:
1、授權指定用戶在指定主機上運行指定的管理命令;
2、詳細記錄用戶基於sudo執行的命令的相關日志信息;
3、“檢票系統”:時效性認證,用戶第一次執行sudo時會要求輸入密碼來驗正用戶身份,成功後用戶會獲得一個有固定存活時長的“令牌”;5分鐘
如何實現sudo功能?
/etc/sudoers:授權文件,只能由管理員編輯;但一般不用vim直接去編輯,因為可能會出現語法錯誤,所以一般用專用的編輯工具visudo命令去授權。
/etc/sudoers:
注意:別名定義: 別名必須使用全大寫字符
內置變量: ALL: 所有用戶
User_Alias:
User_Alias NAME = item1, item2, ...
item:
用戶名
%組名
#UID
$#GID
User_Alias(表示可以使用已經定義的別名)
例: User_Alias ADMIN =CentOS,%lx,#500
表示定義ADMIN別名,有centos用戶,lx組,UID為500的用戶
Host_Alias:可以在哪些主機上運行
Host_AliasNAME = item1, item2, ...
item:
hostname
ip
network
Host_Alias
例: Host_Alias ALLOWADDR =172.16.37.10,172.16.0.0/16
表示定義ALLOWADDR別名,有ip為172.16.37.10,網絡地址為172.16.0.0/16
Runas_Alias
Runas_AliasNAME = item1, item2, ...
用法和User_Alias相同
Cmnd_Alias:
Cmnd_AliasNAME = item1, item2, ...
item:
命令
目錄(目錄下的所有命令)
Cmnd_Alias
例: Cmnd_Alias COMMAND =/usr/sbin/useradd,/usr/sbin/userdel,/usr/sbin
表示定義COMMAND別名,有useradd,userdel,和/usr/sbin下的所有命令
定義時可取反:Cmnd_AliasPASSWD = /usr/bin/passwd [0-9A-Za-z]*,! /usr/bin/passwd root
sudo授權:
WHO HOST=(WHOM) COMMAND
例:centos MYPC=(root) /usr/sbin/useradd
標簽:
NOPASSWD:表示標簽之後的命令都不用輸密碼
PASSWD:表示標簽之後的命令都用輸密碼
sudo命令:
-l: 查看當前用戶可執行的sudo命令;
-u USERNAME COMMAND: 以指定的用戶身份執行指定的COMMAND;
-k: 清除“令牌”
-b COMMAND: 在後台運行指定的COMMAND
-e /path/to/somefile:修改指定的文件;
例:sudo-u centos useradd user1
Linux教程分享:如何為sudo命令定義PATH環境變量 http://www.linuxidc.com/Linux/2014-09/106076.htm
Ubuntu的sudo與su命令使用與開啟root帳戶 http://www.linuxidc.com/Linux/2008-01/10685.htm
sudo: sorry, you must have a tty to run sudo http://www.linuxidc.com/Linux/2012-11/75153.htm
Linux配置sudo權限 http://www.linuxidc.com/Linux/2012-10/71795.htm
sudo配置臨時取得root權限 http://www.linuxidc.com/Linux/2012-09/69525.htm
Linux下解決用戶不能執行sudo的方法 http://www.linuxidc.com/Linux/2012-07/64694.htm
Linux系統管理員不可不知的命令:sudo http://www.linuxidc.com/Linux/2013-07/87855.htm
sudo使用之實現權限分配 http://www.linuxidc.com/Linux/2014-02/96996.htm