用户受权 生产环境中,root用户密码只有极少数人知道,普通员工只能使用普通用户登陆, 若是普通用户须要执行特殊操做,有两种方法。 (1)su -root ,切换到root执行特殊操做,而后再返回到普通用户 (2)sudo su 优势: 使用简单 缺点: 一、root密码容易泄露 二、普通用户可执行的操做不可控 sudo命令 做用:给普通用户受权,让普通用户能够执行特定操做的权限 缺点:须要进行配置受权 优势: 一、不须要切换到root用户(不须要知道root的密码) 二、用户可执行的命令都是预先设置好的(可执行的权限是可控的) 三、能够记录每一个用户所执行过的命令 sudo的使用 第一步:经过sudo的配置文件为普通用户受权 第二部:普通用户使用sudo来执行特定的操做 sudo的配置文件 /etc/sudoers 格式: 用户名 主机=(切换的用户) 可执行的命令 说明 用户名:普通用户的名称 主机:能够在哪一个主机上执行特定的命令 ALL 表示任意主机 localhost 表示当前主机 hostName 表示具体的主机名 ***.***.***.*** 表示一个ip地址(192.168.6.123) ***.***.***.***/netmask 表示一个网段(192.168.6.0/24) 切换的用户:切换到指定的用户来执行后面的命令,一般的都是root用户 表示的方式 一、(all) 二、(root) 三、 空 可执行的命令:用户能够执行命令 格式:命令1,命令2…… 补充:能够用通配符的方式 例子:给test赋权,让这个用户能够在任意主机切换到root用户执行useradd test ALL=(ALL) /usr/sbin/useradd 注意:修改sudo的配置文件,一般不用vi,而是用visodu命令 使用visodu来修改配置文件,若是你修改的配置文件有错误,那么系统会提示有错,而且阻止保存。 例子:让普通用户laowantong能够在任意主机上执行useradd和userdel命令 一、建立用户laowantong useradd laowantong passwd laowantong 二、修改sudo配置文件 visudo laowantong ALL=(root) /usr/sbin/useradd,/usr/sbin/userdel 三、用普通用户laowantong登陆系统,而后执行新建用户和删除用户的操做 sudo useradd zhoubotong sudo userdel zhoubotong 思考:为何用sudo的时候,会提示输入密码 为何第二次不须要输入密码 普通用户在执行sudo的时候,会在/var/db/sudo/lectured/下生成该用户的一个秘钥, 这个用户的秘钥有效期是5分钟,这样在5分钟以内再次执行sudo的时 候,是不须要输入密码的。 扩展受权格式 test ALL=(root) /usr/sbin/useradd test ALl=(root) ALL %gp01 ALL=(root) /usr/sbin/useradd test ALL=(root) /usr/sbin/* %gp01 ALL=(root)/usr/sbin/useradd,/usr/sbin/userdel %gp01 ALL=(root)NOPSAAWD:/usr/sbin/useradd,/usr/sbin/userdel 不用输入密码 %gp01 ALL=(root)NOPASSWD:/usr/sbin/useradd,NOPASSWD:/usr/sbin/userdel 不用输入密码 test ALL(root) NOPASSWD:ALL 不用输入密码 %gp01 ALL(root) /usr/sbin/*,!/usr/sbin/useradd 除了/usr/sbin/useradd 不能执行 注意:若是直接是一个字符串,那么这几一个用户名 若是在字符串前面有个%,那么这是一个用户组 用户使用sudo的基本流程 一、sudo -------->>>>>var/db/sudo/检查时间戳是否过时 -------->>>>>若是过时,要求从新输入密码 -------->>>>>记录时间戳到/var/db/sudo --检查/etc/sudoers 是否有受权 -------->>>>>若是有执行命令 -------->>>>>若是还没有过时--->>>>>检查/etc/sudoers 是否有受权 -------->>>>>若是有执行命令 -------->>>>>报错提示无权限,并退出sudo sudo配置文件的构成 定义别名 受权规则 别名的类别 Host_Alias:主机别名。别名字母必须都是大写,成员能够是主机、网段 Host_Alias MYHOST = zhangsan,lisi Host_Alias MYHOST = ALL Host_Alias MYHOST =locahost,192.168.6.0/24,172,10.0.0/16 User_Alias:用户别名。别名字母必须都是大写,成员都是系统中的用户, 也能够是组 User_Alias MYUSER =tom,jerry User_Alias MYUSER =tom,jerry,%gp01 Cmnd_Alias:命令别名,成员都是系统中的命令,这里最好用命令的绝对路径。 Cmnd_Alias MYCMD = usr/sbin/useradd,usr/sbin/userdel Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin* Cmnd_Alias MYCMD = usr/sbin/*,/usr/bin* !/usr/sbin/useradd Runas_Alias:角色别名,成员一般都是root或者其余权限较高的用户,用的比较少 注意:一、别名的名称中的字母必须都是大写 二、别名中的能够有数字和下划线,可是必须以字母为开头 主机别名举例 Host_Alias H1 = localhost,zhangsan,lisi,192.168.6.123,172.20.0.0/16 用户别名举例 User_Alias DEV = zs,ls,ww,%admin 命令别名举例 Cmnd_Alias CMND1 = /usr/sbin/useradd, /usr/sbin/userdel,/bin/*,/sbin/[a-g]* Cmnd_Alias CMND1 = /usr/sbin/useradd, NOPASSWD:/usr/sbin/userdel,/bin/*,!/bin/find,/sbin/[a-g]* 特殊写法 User_Alias DEV = zs,ls,ww,%admin: NET = dehua,degang sudo的受权规则 格式: 受权用户 主机=[(切换到的用户)] [NOPASSWD:]命令1,[(切换到的用户)] [NOPASSWD:]命令2, [(切换到的用户)] [NOPASSWD:]命令3…… 说明: 一、[]中的内容都是可省略的 二、命令和命令之间用逗号分隔 三、若是省略[(切换到的用户)],表示切换到root用户执行后面的命令 四、若是(切换到的用户)写出(ALL),表示切换到全部用户,从全部用户中 找出能够执行后面的命令并执行命令 五、若是[NOPASSWD:]省略,则表示在用户首次使用sudo时候输入密码,密码有效期为5分钟 timi ALL= /bin/* timi ALL= /usr/bin/passwd, !/usr/bin/passwd root timi ALL= /bin/vi, !/bin/vi /etc/* 或者 Cmnd_Alias CMD_TIMI = /bin*, /usr/bin/passwd, !/usr/bin/passwd root,/bin/vi, !/bin/vi /etc/* timi ALl= CMD_TIMI sudo-l User timi may run the following commands on this host: (root) /usr/bin/passwd sudo命令的选项 -l:查看当前用户的受权信息 -k:让当前主机上的sudo秘钥马上失效 visudo命令选项 -c:检查sudo的配置文件是否有语法错误 治理公司root权限泛滥的状况 第一步:分析员工的类别 分析梳理公司须要使用服务器的员工的数量和类别 开发一、开发2……开发主管 运营一、运营2……运营主管 初级运维一、初级运维二、初级运维3 中级运维一、中级运维二、中级运维3 高级运维一、高级运维二、高级运维3 第二步:分析各种员工要执行的操做 开发:上传和下载、建立目录、文件、删除文件、目录 开发主管:上传和下载、建立目录、文件、删除文件、目录 运营…… 运营主管…… 第三步:结合要执行的操做给出必须的命令 将命令反馈给各个部门,让他们检查是否知足平常的操做需求 第四步:sudo受权 定义命令别名 定义用户别名 定义主机别名 sudo受权 第五步:测试受权是否可用