sudo命令的使用-创新互联

在linux系统中,有些普通用户需要借助root帐号来执行一些操作,但我们并不能把root密码给普通用户,就有了sudo

创新互联主营中方网站建设的网络公司,主营网站建设方案,成都App制作,中方h5微信小程序开发搭建,中方网站营销推广欢迎中方等地区企业咨询

sudo可以临时切换到指定帐号进行操作

使用方法:

 sudo [ -u 用户帐号] 需要执行的命令;切换到root时,可以直接执行sudo 执行命令 即可;

 sudo -l :列出所有可以执行的命令

使用条件:

 必须以root身份执行visudo,添加需要执行sudo命令的用户;

 执行visudo,实际上修改的是/etc/sudoers文件;

 为什么要使用visudo,而不直接使用vim /etc/sudoers呢?这是因数visudo在修改完成后可以对语法进行检查

 使用visudo -c进行语法检查,当sudoers文件有语法错误时,所有的sudo命令都无法使用

修改配置:

 [root@web1 ~]# visudo

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

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

 sudo命令的使用

 用户帐号:表示系统中哪个帐号可以使用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

 用!(感叹号)表示排除此命令

进行测试:

 sudo命令的使用

结果:

 从上图中可以看到以普通用户liu登录时,执行sudo命令创建test2目录,其属主和属组均为root

sudo免密码执行命令:

 每次执行sodu命令都需要输入用户密码才能执行,那怎么可以做到执行sudo不输入密码呢?

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

 在给定可执行的命令时,在前边添加NOPASSWD

有时我们需要为很多用户添加sudo权限,此时可以通过组来实现

前提:

 把需要执行同样的权限的普通用户,添到同一个组中

 把用户wei,cui同时加入到组liu中,此组liu中就有liu,wei,cui3个普通用户

 sudo命令的使用

修改配置文件:

 #visudo    把之前添加的用户liu独有权限删除,添加组liu

 sudo命令的使用

 找到圈中的这一行,把“wheel”改为你自己设定的组,我这边改为组liu,保存退出进行测试

 sudo命令的使用

检查语法:

 #visudo -c

测试:

 分别切换到用户liu,wei,cui进行测试 注意:用户第一次用sudo命令时会收到一些提示

 sudo命令的使用

 sudo命令的使用

 sudo命令的使用

 查看上面3文件的属主属组,可以看到都为root,说明测试成功

 sudo命令的使用

 以后如果想要增加或者删除某个用户sudo权限时,只需要将此用户添加到或者移除此组就可以了

思考:

 使用sudo命令切换用户,总是提示输入自己的密码才可以成功,那有没有办法不输入密码呢?

 sudo命令的使用

 找到此行,把前边的#号去掉,百分号后边添加你需要设定的组即可

测试:可以看到用户组liu中的所有用户,再执行sudo操作时,可以不用输入密码了

 sudo命令的使用

 sudo命令的使用

 sudo命令的使用

总结:

 要给定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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前文章:sudo命令的使用-创新互联
网站URL:http://pwwzsj.com/article/phipd.html