用户权限管理系统需求分析(超详介绍用户管理系统)

1.用户基本概述

1.1 用户相关的命令

1.2 用户创建的原理

2.用户密码管理

3.组的基本管理

4.用户身份切换

5.用户身份提权

6.日志相关审计

01用户基本概述

Linux用户属于多用户操作系统,在windows中,可以创建多个用户,但不允许同一时间多个用户进行系统登陆,但是Linux可以同时支持多个用户同时登陆操作系统,登陆后互相之间并不影响。

用户权限管理系统需求分析(超详介绍用户管理系统)

用户和组存在的意义

?? 1.系统上的每一个进程(运行的程序)都需要特定的用户运行

?? 2.每一个文件都有特定的用户拥有

?? 3.访问一个文件或目录受到用户的限制

?? 4.进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关

查看当前登录的用户信息

[root@liyanzhao-node1/]#iduid=0(root)gid=0(root)groups=0(root)

用户分类

0 超级管理员(拥有最高权限)

1-200 系统用户,由系统分配给系统进程使用

201-999 系统用户,用来运行服务账户,不需要登陆系统(动态分配)

1000 常规普通用户

注意: 在CentOS7系统之前, UID1-499用于系统用户, 而UID 500 则用于普通用户。

组的类别

基本组 优先使用基本组, 用户只能属于一个基本组, 用户默认基本组

附加组 基本组不能满足授权要求, 创建附加组, 用户可以属于多个附加组

私有组 私有组, 创建用户时如果没有指定基本组, 系统会创建和用户同名的组

用户相关配置文件

用户的信息存放在/etc/passwd用户的密码都保存在/etc/shadow这两个文件是linux系统中最重要的文件之一。

如果没有这两个文件或者这两个文件出问题,会导致无法正常登录linux系统。

/etc/passwd账户文件[root@node1~]#head-1/etc/passwdroot:x:0:0:root:/root:/bin/bash/etc/passwd由‘:’为分割符,分为7个字段,每个字段的具体含义如下:字段名称注释说明1.用户名称//用户的账号名称2.密码占位符//存放账户的口令,暂用x表示,密码保存在/etc/shadow3.用户的UID//用户标识号4.用户基本组GID//组标识号5.用户注释//用户详细信息6.用户家目录//root家目录是/root普通用户家目录存在/home/username(可自定义)7.用户登录Shell//用户登录Linux使用的shell#cat/etc/shells/etc/shadow用户密码文件[root@liyanzhao~]#tail-1/etc/shadowlyz:!!:16312:0:99999:7:::/etc/shadow由‘:’为分割符,分为9个字段,每个字段的具体含义如下:字段名称注释说明1.用户登陆名//用户的账号名称2.加密后的密码//用户密码,这是加密过的口令(未设密码时为!!)3.最近一次密码更改时间//从1970年到最近一次更改密码时间之间过了多少天4.密码最少使用几天//密码最少使用几天才可以更改密码(0表示无限制)5.密码最长使用几天//密码使用多少天需要修改密码(默认99999永不过期)6.密码到期前警告期限//密码过期前多少天提醒用户更改密码(默认过期提前7天警告)7.密码到期后保持活动的天数//在此期限内,用户依然可以登陆系统并更改密码,指定天数过后,账户被锁定8.账户到期时间//从1970年起,账户在这个日期前可使用,到期后失效。9.标志//保留

按照图配置用户相关属性

使用chage更改用户密码密码使用情况

-d//设置最近一次更改密码时间,0下次登陆系统强制修改密码-m//设置用户两次改变密码之间使用”最小天数”-M//设置用户两次改变密码之间使用”最大天数”-W//设置密码更改警告时间将过期警告天数设为“警告天数”-I//设置密码过期天数后,密码为失效状态-E//设置用户过期时间,账户失效后无法登陆-l//显示用户信息//修改时间为2014年08月31日,和图中时间匹配,方便后续验证[root@liyanzhao~]#date-s’20140831’SunAug3100:00:00CST2014[root@liyanzhao~]#dateSunAug3100:00:01CST2014[root@liyanzhao~]#useraddlyz[root@liyanzhao~]#echo”123″|passwd–stdinlyz[root@liyanzhao~]#tail-1/etc/shadowlyz:!!:16312:0:99999:7::://设置最近一次修改密码时间[root@liyanzhao~]#chage-d”2014-09-01″lyz[root@liyanzhao~]#tail-n1/etc/shadowlyz:!!:16314:0:99999:7::://设置最短使用密码时间[root@liyanzhao~]#chage-m2lyz[root@liyanzhao~]#tail-n1/etc/shadowlyz:!!:16314:2:99999:7::://设置密码最长使用时间[root@liyanzhao~]#chage-M15bgx1[root@liyanzhao~]#tail-n1/etc/shadowbgx1:!!:16314:2:15:7::://设置密码警告时间[root@liyanzhao~]#chage-W6bgx1[root@liyanzhao~]#tail-n1/etc/shadowbgx1:!!:16314:2:15:6:::[root@liyanzhao~]#chage-W7bgx1[root@liyanzhao~]#tail-n1/etc/shadowbgx1:!!:16314:2:15:7::://设置密码过期时间[root@liyanzhao~]#chage-I5bgx1[root@liyanzhao~]#tail-n1/etc/shadowbgx1:!!:16314:2:15:6:5:://设置用户过期时间[root@liyanzhao~]#chage-E”20115-08-31″bgx1[root@liyanzhao~]#tail-n1/etc/shadowbgx1:!!:16314:2:15:6:5:6627567:[root@liyanzhao~]#chage-llyzLastpasswordchange:Sep01,2014//最近一次更改密码时间Passwordexpires:Sep16,2014//密码过期时间Passwordinactive:Sep21,2014//密码失效时间Accountexpires:Aug31,2015//用户失效时间Minimumnumberofdaysbetweenpasswordchange:2//密码最短使用时间Maximumnumberofdaysbetweenpasswordchange:15//密码最长使用时间Numberofdaysofwarningbeforepasswordexpires:7//密码过期前警告天数//如何验证,只调整时间为如下进行验证:1.验证普通用户是否能修改密码,不需要调整时间。2.普通用户登陆系统后,会提示警告密码还剩多少天过期[root@liyanzhao~]#date-s”2014-09-12″3.普通用户登陆系统后,强制要求修改密码[root@liyanzhao~]#date-s”2014-09-18″4.普通用户登陆系统后,提示账户已过期[root@liyanzhao~]#date-s”2014-09-23″

1

用户相关的命令

添加用户前需要确定

确定用户的默认组是否有特殊要求

确定用户是否允许登陆

确定用户的密码策略

确定用户的有效期

确定用户的uid是否有特殊要求

1.使用useradd命令新增用户, 注意: adduser命令软链接指向useradd命令

‘-u’ 指定用户的UID,不能和现有ID冲突

‘-g’ 指定用户用户默认基本组

‘-G’ 指定用户附加组,用逗号隔开添加多个附加组

‘-d’ 指定用户家目录

‘-c’ 指定用户注释信息

‘-M’ 不建立家目录

‘-s’ 指定用户默认shell

‘-r’ 创建系统账户, 没有家目录

//创建lyz用户,指定UID5001,基本组students附加组sa,dba注释信息:2018newstudent,登陆的shell:/bin/bash[root@liyanzhao~]#groupaddsa[root@liyanzhao~]#groupadddba[root@liyanzhao~]#groupaddstudents[root@liyanzhao~]#useradd-u5001-gstudents-Gsa,dba-c”2018newstudent”-d/home/bgx-s/bin/bashlyz[root@liyanzhao~]#tail-1/etc/passwdbgx:x:5001:505:2017newstudent:/home/bgx:/bin/bash//创建系统用户,-M不建立用户家目录-s指定nologin使其用户无法登陆系统[root@node1~]#useraddmysql-M-s/sbin/nologin[root@node1~]#useradd-rdba-s/sbin/nologin

2.使用usermod命令修改用户组

‘-u’修改用户的UID’-g’修改用户所属的基本组GID’-G’修改用户附加组,使用逗号隔开多个附加组,覆盖原有的附加组’-a’追加更多的附加组,必须和-G使用:-aG追加附加组’-m’家目录迁移,必须和-d一起使用,移动用户的家目录到新的位置’-d’指定用户的家目录新位置’-c’修改用户的注释信息’-s’更改用户使用的shell’-l’更改用户登录名’-L’锁定用户’-U’解锁用户[root@liyanzhao~]#grep”lyz”/etc/passwdbgx:x:5001:505:2018newstudent:/home/lyz:/bin/bash//修改用户uid,gid,附加组,注释信息,用户家目录,登录shell,登录名//建立组,指定组gid[root@liyanzhao~]#groupadd-g5008network_sa[root@liyanzhao~]#groupadd-g5009devops//修改用户属性[root@liyanzhao~]#usermod-u6001-g5008-a-G5009-c”2019newstudent”-md/lyz-s/bin/sh-llyz_liyanzhaolyz//检查是否修改成功[root@liyanzhao~]#grep”lyz”/etc/passwdlyz_liyanzhao:x:6001:5008:2019newstudent:/lyz:/bin/sh[root@liyanzhao~]#idlyz_liyanzhaouid=6001(lyz_liyanzhao)gid=5008(network_sa)groups=5008(network_sa),503(sa),504(dba),5009(devops)//验证家目录[root@liyanzhao~]#ll-d/lyzdrwx——.2lyz_liyanzhaonetwork_sa40962014-09-2300:13/lyz锁定用户[root@liyanzhao~]#echo”123″|passwd–stdinlyz_liyanzhao[root@liyanzhao~]#usermod-Llyz_liyanzhao//无法正常登录系统~sshlyz_liyanzhao@192.168.56.11lyz_liyanzhao@192.168.56.11’spassword:Permissiondenied,pleasetryagain.解锁用户[root@liyanzhao~]#usermod-Ulyz_liyanzhao//正常登录系统~sshbgx_liyanzhao@192.168.56.11lyz_liyanzhao@192.168.56.11’spassword:WelcometoAliyunEscLinux-sh-4.1$

3.使用finger命名查询用户信息以及登录信息

//安装finger命令[root@liyanzhao~]#yuminstallfinger-y[root@liyanzhao~]#fingerlyz_liyanzhaoLogin:bgx_liyanzhaoName:2019newstudentDirectory:/lyzShell:/bin/shOnsinceTueSep2301:33(CST)onpts/1from192.168.56.25minutes4secondsidleNomail.NoPlan.

4.使用chfn修改用户信息

[root@liyanzhao~]#chfnlyz_liyanzhaoChangingfingerinformationforbgx_liyanzhao.Name[2019newstudent]:2020newstudentOffice[]:110OfficePhone[]:89270000HomePhone[]:15210xxxxxx//使用finger再次检查[root@liyanzhao~]#fingerlyz_liyanzhaoLogin:lyz_liyanzhaoName:2020newstudentDirectory:/lyzShell:/bin/shOffice:110,89270000HomePhone:15210xxxxxxOnsinceTueSep2301:33(CST)onpts/1from192.168.56.26minutes49secondsidleNomail.NoPlan.

5.使用chsh命令更改用户登录shell

[root@liyanzhao~]#chshlyz_liyanzhaoChangingshellforlyz_liyanzhao.Newshell[/bin/sh]:/bin/bashShellchanged.[root@liyanzhao~]#grep”lyz_liyanzhao”/etc/passwdlyz_liyanzhao:x:6001:5008:2020newstudent,110,89270000,15210xxxxxx:/lyz:/bin/bash

6.检查用户登陆情况

[root@liyanzhao~]#wholiyanzhaopts/02017-10-3009:30(192.168.56.2)lyz_liyanzhaopts/12014-09-2301:33(192.168.56.2)rootpts/22017-10-3007:13(192.168.56.2)[root@liyanzhao~]#w01:43:18up1day,15:00,3users,loadaverage:0.00,0.00,0.00USERTTYFROMLOGIN@IDLEJCPUPCPUWHATliyanzhaopts/0192.168.56.209:30?0.35s0.18ssshd:xulyz_liyanzhaopts/1192.168.56.201:339:240.03s0.00sbashrootpts/2192.168.56.207:130.00s1.49s0.08sw

7.使用userdel删除账户

语法:userdel[-r]username//-r同时删除家目录[root@liyanzhao~]#userdeluser1[root@liyanzhao~]#ll/home/user1/-ddrwx——.350150140962017-11-1512:40/home/user1///连同家目录一起删除[root@liyanzhao~]#userdel-ruser1

2

用户创建的原理

Linux创建用户默认会读取/etc/defaults/useradd的配置文件,如果当我指定参数时,使用指定参数,如果不指定参数,默认使用/etc/defaults/useradd中的配置。

当我们使用useradd命令新建用户时,用户家目录下会产生相应的.bash_*文件,这些文件默认是从/etc/skel目录中复制。如需变更环境拷贝目录站点可修改:/etc/defaults/useradd的配置文件。

注意:如果执行useradd命令新建用户时,指定了参数,就会覆盖/etc/default/useradd默认的配置。

[root@student~]#egrep-v”^#|^$”/etc/login.defsMAIL_DIR/var/spool/mailPASS_MAX_DAYS99999PASS_MIN_DAYS0PASS_MIN_LEN5PASS_WARN_AGE7UID_MIN1000UID_MAX60000SYS_UID_MIN201SYS_UID_MAX999GID_MIN1000GID_MAX60000SYS_GID_MIN201SYS_GID_MAX999CREATE_HOMEyesUMASK077USERGROUPS_ENAByesENCRYPT_METHODSHA512[root@student~]#cat/etc/default/useraddGROUP=100HOME=/home//把用户的家目录建在/home中。INACTIVE=-1//是否启用账号过期停权,-1表示不启用。EXPIRE=//账号终止日期,不设置表示不启用。SHELL=/bin/bash//新用户默认所有的shell类型。SKEL=/etc/skel//配置新用户家目录的默认文件存放路径。CREATE_MAIL_SPOOL=yes//创建mail文件。//用户登录linux操作系统,环境变量被误删,出现-bash-4.1$,如何解决!-bash-4.1$cp-a/etc/skel/.bash*./-bash-4.1$exit[root@student~]#su-liyanzhao[liyanzhao@student~]$

02用户密码管理

创建完账户后,默认是没有设置密码的,所以该账户是没有办法登陆操作系统。只有使用passwd设置好密码后方可登录系统。

使用passwd为用户创建密码时,为了安全起见,请尽量设置复杂一些。可以按照如下规则设置密码:

1.密码的长度最好大于10位字符

2.密码中包含大小写字母数字以及特殊字符 ! @ # $

需要注意:

1.普通用户只能更改自己的密码(密码必须满足8位字符)

2.管理员用户能更改任何人的密码(密码长度无限制)

1.使用passwd命令修改用户密码

语法: passwd [username]

//‘passwd’后面不加[username]则是修改当前登陆终端用户的密码。

//如果你登陆的是root管理员用户,后面可以指定要修改的用户。

//只有root管理员才可以修该其他用户的密码,普通账户只能修改自己的密码,并且普通用户没有修改其他用户密码的权限

//root管理员用户登陆,修改root用户密码

[root@localhost~]#passwd更改用户root的密码。新的密码:重新输入新的密码:passwd:所有的身份验证令牌已经成功更新。//root用户登陆,修改其他用户的密码[root@localhost~]#passwdliyanzhao更改用户liyanzhao的密码新的密码:重新输入新的密码:passwd:所有的身份验证令牌已经成功更新。//普通用户修改root管理员密码[bgx_liyanzhao@liyanzhao~]$passwdrootpasswd:Onlyrootcanspecifyausername.//无需用户交互修改密码,将前者的输出结果,成为后者的输入[root@liyanzhao~]#echo”123″|passwd–stdinliyanzhaoChangingpasswordforuserliyanzhao.passwd:allauthenticationtokensupdatedsuccessfully.

2.随机复杂密码生成的方式

//1.系统内置变量生成随机密码[root@node1~]#echo$RANDOM|md5sum|cut-c1-10d09fe9b1xs[root@node1~]#echo$(echo$RANDOM|md5sum|cut-c5-14)|teepass.txt|passwd–stdinliyanzhao//2.mkpasswd密码生成工具,-l设定密码长度,-d数子,-c小写字母,-C大写字母,-s特殊字符[root@liyanzhao~]#yuminstall-yexpect//需要安装扩展包[root@liyanzhao~]#mkpasswd-l10-d2-c2-C2-s4|K&13bR)i///3.推荐密码保存工具客户端,支持windows、MacOS、Iphone以及浏览器插件Lastpass官方网站

03组的基本管理

组账户信息保存在/etc/group和/etc/gshadow两个文件中。

/etc/group 组账户信息

[root@node1~]#head-2/etc/grouproot:x:0:bin:x:1:bin,daemon///etc/group由’:’分割,分割为4个字段,每个字段的具体含义如下:字段名称1.组的名称2.组的密码(存在/etc/gshadow)3.组GID信息4.仅显示附加成员,基本成员不显示/etc/gshadow组密码信息[root@node1~]#head-2/etc/gshadowroot:::bin:::bin,daemon///etc/gshadow由‘:’分割,分割为4个字段,每个字段的具体含义如下:字段名称1.组名称2.组密码3.组管理员4.仅显示附加成员,基本成员不显示

1.使用groupadd命令新增组groupadd [-g GID] groupname

//创建基本组,不指定gid[root@node1~]#groupaddno_gid[root@node1~]#tail-n1/etc/groupno_gid:x:1000://创建基本组,指定gid为5555[root@node1~]#groupadd-g5555yes_gid[root@node1~]#tail-n1/etc/groupyes_gid:x:5555://创建系统组,gid从201-999[root@liyanzhao~]#groupadd-rsys_group[root@liyanzhao~]#tail-n1/etc/groupsys_group:x:990:

2.使用groupmod命令新增组

//-g修改组gid[root@liyanzhao~]#groupmod-g1111no_gid[root@liyanzhao~]#tail-1/etc/groupno_gid:x:1111://-n修改组名称[root@liyanzhao~]#groupmod-nactive_groupyes_gid[root@liyanzhao~]#tail-1/etc/groupactive_group:x:5555:

3.使用groupdel删除组

该命令没有特殊选项,如果一个用户有基本组和附加组,只能删除附加组,不能删除基本组

#删除组[root@liyanzhao~]#groupdelactive_group#删除用户附加组[root@docker~]#idliyanzhaouid=1069(liyanzhao)gid=5005(liyanzhao)groups=5005(liyanzhao),5004(devops)[root@docker~]#groupdeldevops[root@docker~]#idliyanzhaouid=1069(liyanzhao)gid=5005(liyanzhao)groups=5005(liyanzhao)#无法删除用户基本组[root@liyanzhao~]#tail-n1/etc/groupnetwork_sa:x:5008:[root@liyanzhao~]#groupdelnetwork_sagroupdel:cannotremovetheprimarygroupofuser’lyz_liyanzhao’#只有删除用户或者用户变更基本后,方可删除该组

4.使用gpasswd设置组密码

[root@liyanzhao~]#groupadddevops[root@liyanzhao~]#gpasswddevopsChangingthepasswordforgroupdevopsNewPassword:Re-enternewpassword:

5.使用newgrp命令切换基本组身份

//检查账户信息[root@docker~]#useraddliyanzhao[root@docker~]#idliyanzhaouid=1069(liyanzhao)gid=5005(liyanzhao)groups=5005(liyanzhao)//切换普通用户[root@docker~]#su-liyanzhao//创建新文件,并验证权限[liyanzhao@docker~]$touchfile_roots[liyanzhao@docker~]$ll-rw-rw-r–1liyanzhaoliyanzhao0Jun1310:06file_roots//切换组信息[liyanzhao@docker~]$newgrpdevopsPassword://建立文件,检查权限[liyanzhao@docker~]$touchfile_test[liyanzhao@docker~]$lltotal0-rw-rw-r–1liyanzhaoliyanzhao0Jun1310:06file_roots-rw-r–r–1liyanzhaodevops0Jun1310:08file_test

04用户身份切换

Linux系统中,有时候普通用户有些事情是没办法操作,除非是root管理员用户才能做到。这时就需要临时切换到root管理员身份来做事了。那么在学习如何切换用户之前,我们先来了解下用户工作环境。

1.Shell分类

交互式shell //等待用户输入执行的命令(终端操作,需要不断提示)

非交互式shell //执行shell脚本, 脚本执行结束后shell自动退出

登陆shell //需要输入用户名和密码才能进入shell su – liyanzhao

非登陆shell //不需要输入用户和密码就能进入,比如执行sh, bash, su username

//查看登陆shell[root@liyanzhao~]#pstree//临时设置,永久设置需要写配置文件[root@liyanzhao~]#exportPS1='[\h@\u\t]#'[liyanzhao@root02:06:28]#

2.bash shell配置文件

Bash的配置文件保存用户的工作环境

个人配置文件: ~/.bash_profile ~/.bashrc

全局配置文件:/etc/profile /etc/profile.d/*.sh /etc/bashrc

profile类文件, 设定环境变量, 登陆前运行的脚本和命令

bashrc 类文件, 设定本地变量, 定义命令别名

全局配置和个人配置设置冲突, 优先使用个人配置准

3.shell配置文件应用顺序

//登录式shell配置文件执行顺序/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc//非登陆式shell配置文件执行顺序~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh#验证登陆shell和非登陆shell配置文件执行顺序, 在每个配置文件加入一段 “echo”即可。#最后通过登陆shell和非登录shell方式登陆linux, 即可验证执行顺序。

4.如果全局配置和个人配置出现冲突, 那么如何验证呢?

5.创建用户,并登录系统

[root@node1~]#useraddliyanzhao[root@node1~]#echo”123″|passwd–stdinliyanzhao//使用liyanzhao用户登录当前Linux系统??~sshliyanzhao@192.168.56.111liyanzhao@192.168.56.111’spassword:[liyanzhao@node1~]$//可以使用whoami查看当前登录用户[liyanzhao@node1~]$whoamiliyanzhao

6.切换用户,使用命令su [-] username

su命令后面跟-代表进入登陆式shell 如果su命令后不加-代表进入非登陆式shell,他们之间的区别在于加载的环境变量不一样。

普通用户su -代表直接切换至root用户身份, 但需要输入root用户密码。

超级管理员root用户使用su – username切换普通用户不需要输入任何密码。

[liyanzhao@node1~]$pwd/home/liyanzhao//不加’-‘切换到root账户下时,当前目录没有变化[liyanzhao@node1~]$su密码:[root@node1liyanzhao]#pwd/home/liyanzhao[root@node1liyanzhao]#exitexit//加’-‘切换到root账户,当前目录为root账户的家目录。[liyanzhao@node1~]$su-密码:[root@node1~]#pwd/root//以某个用户的身份执行某个服务,使用命令su-cusername[root@liyanzhao~]#su-liyanzhao-c’ifconfig'[root@liyanzhao~]#su-liyanzhao-c’ls~’

05用户身份提权

su命令在切换用户身份时,如果每个普通用户都能拿到root用户的密码,当其中某个用户不小心泄漏了root的密码,那系统会变得非常不安全。

为了改进这个问题,从而产生了sudo这个命令。

sudo执行一个仅有root身份才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。

[root@node1~]#usermodlyz-Gwheel//日志审计[root@node1~]$sudotail-f/var/log/secure

1.CentOS6提权

2.普通用户验证sudo权限

#1.切换普通用户[root@liyanzhao~]#su-liyanzhao#2.检查普通用户sudo权限明细[liyanzhao@liyanzhao~]$sudo-l…Userliyanzhaomayrunthefollowingcommandsonthishost:(ALL)/bin/rm,(ALL)/bin/cp#3.普通用户删除opt目录,删除失败[liyanzhao@liyanzhao~]$rm-rf/opt/rm:cannotremove`/opt’:Permissiondenied#4.使用sudo提权,验证用户权限是否可用,需要输入普通用户的密码[liyanzhao@liyanzhao~]$sudorm-rf/opt

3.sudo免密码配置选项

#1.普通用户执行sudo不需要输入密码配置[root@liyanzhao~]#visudoliyanzhaoALL=(ALL)/bin/rm,/bin/cp#默认liyanzhaoALL=(ALL)NOPASSWD:/bin/rm,/bin/cp#修改后#2.默认普通用户无权删除[liyanzhao@liyanzhao~]$rm-f/root/002rm:cannotremove`/root/002′:Permissiondenied#3.验证sudo免密码执行权限[liyanzhao@liyanzhao~]$sudorm-f/root/002

4.sudo配置组

//如果每增加一个用户需配置一行sudo,这样设置非常麻烦。所以可以进行如下设置%lyzALL=(ALL)NOPASSWD:/bin/rm,/bin/cp#新增组//group1这个组的所有用户都拥有sudo的权力。接下来只需要将用户加入该组即可。//创建用户加入该组[root@liyanzhao~]#groupaddlyz[root@liyanzhao~]#useraddlyz1-glyz[root@liyanzhao~]#useraddlyz2-glyz//root用户建立目录[root@liyanzhao~]#mkdir/root/lyz_sudo//切换用户并删除测试[root@node1~]#su-bgx1[bgx1@liyanzhao~]$rm-rf/root/lyz_sudorm:cannotremove`/root/lyz_sudo’:Permissiondenied//使用sudo[lyz1@liyanzhao~]$sudorm-rf/root/lyz_sudo

当然配置文件/etc/sudoers包含了诸多配置项,可以使用命令man sudoers来获得帮助信息。

下面介绍一个很实用的案例,我们的需求是将Linux服务器设置成如下:

1.仅允许使用普通账户登陆Linux服务器,禁止root直接登录

2.可以让普通用户不输入密码就能sudo su -切换到root账户

//禁止root用户登陆[root@liyanzhao~]#sed-i’s@#PermitRootLoginyes@PermitRootLoginno@g’/etc/ssh/sshd_config[root@liyanzhao~]#systemctlrestartsshd//配置sudo权限[root@liyanzhao~]#visudoUser_AliasUSER_SU=lyz1,lyz2,liyanzhaoCmnd_AliasSU=/bin/suUSER_SUALL=(ALL)NOPASSWD:SU//使用root登陆服务器失败~sshroot@192.168.56.11root@192.168.56.11’spassword:Permissiondenied,pleasetryagain.//使用普通用户登陆服务器~sshliyanzhao@192.168.56.11liyanzhao@192.168.56.11’spassword:Lastlogin:MonOct3009:28:212017from192.168.56.2//使用sudo提权至root用户[liyanzhao@liyanzhao~]$sudosu-[root@liyanzhao~]#

5.sudo执行流程

1.普通用户执行sudo命令, 会检查/var/db/sudo是否存在时间戳缓存

2.如果存在则不需要输入密码, 否则需要输入用户与密码

3.输入密码会检测是否该用户是否拥有该权限

4.如果有则执行,否则报错退出

06日志相关审计

通过sudo和syslog配合实现对所有用户进行权限的日志审计并将记录日志集中管理,实施后让所有运维和开发执行的sudo命令都有记录可查,杜绝了内部人员的操作安全隐患。

sudo日志审计,专门针对sudo命令的系统用户记录其执行的命令相关信息,所谓sudo命令日志审计,并不记录普通用户的操作,而是记录执行sudo命令的用户操作。

1.安装sudo、rysylog[root@node1~]#yuminstall-ysudorsyslog//检测是否安装成功[root@node1~]#rpm-qasudorsyslogrsyslog-5.8.10-10.el6_6.x86_64sudo-1.8.6p3-19.el6.x86_642.配置/etc/sudoers记录日志路径[root@node1~]#echo”Defaultslogfile=/var/log/sudo.log”>>/etc/sudoers//查看追加的日志配置[root@node1~]#tail-1/etc/sudoersDefaultslogfile=/var/log/sudo.log//检查语法[root@node1~]#visudo-c/etc/sudoers:parsedOK3.配置rsyslog日志服务[root@node1~]#echo”local2.debug/var/log/sudo.log”>>/etc/rsyslog.conf//重启rsyslog服务[root@node1~]#/etc/init.d/rsyslogrestartShuttingdownsystemlogger:[OK]Startingsystemlogger:[OK]4.普通用户使用sudo权限验证日志记录//使用普通执行sudo命令[liyanzhao@node1~]$rm-rf/root/test/rm:无法删除”/root/test”:权限不够[liyanzhao@node1~]$sudorm-rf/root/test///检查用户在什么时间执行过什么操作[liyanzhao@node1~]$cat/var/log/sudo.logNov707:56:58:liyanzhao:TTY=pts/1;PWD=/home/liyanzhao;USER=root;COMMAND=/bin/rm-rf/root/test/

发表评论

登录后才能评论