当前位置: 首页 > Linux

Linux权限管理(四)sudo权限

时间:2023-04-06 23:05:16 Linux

在学习sudo权限之前,先了解一下CentOS系统在用户第一次使用sudo权限时的提示。相信您已经从系统管理员那里了解到了日常的注意事项。总结起来就是三点:#1)尊重他人的隐私。#2)在你进入之前思考(后果和风险)。#3)能力越大,责任越大。sudo权限的作用是:让普通用户可以临时以root用户身份和权限执行系统命令。sudo权限的操作对象是系统命令1.sudo权限的配置1.编辑sudo权限命令visudovisudo命令实际上是修改/etc/sudoers文件2./etc/sudoers配置文件[root/etc]#cat/etc/sudoers...省略一些内容...##Allowroottorunanycommandsanywhere##AllowroottorunanycommandrootanywhereALL=(ALL)ALL##允许‘sys’组的成员运行网络、软件、服务管理应用程序等。##允许“sys”用户组的成员运行网络、软件、服务管理应用程序等命令。#%sysALL=NETWORKING,SOFTWARE,SERVICES,STORAGE,DELEGATING,PROCESSES,LOCATE,DRIVERS##允许组wheel中的人运行所有命令##允许“wheel”用户组的成员运行所有命令%wheelALL=(ALL)ALL##允许wheel组的人运行所有命令,无需密码##允许“wheel”用户组的成员运行所有命令,运行时不需要输入密码#%wheelALL=(ALL)NOPASSWD:ALL##允许users组的成员以root身份挂载和卸载cdrom##允许“users”组的成员运行命令挂载和卸载cdrom#%usersALL=/sbin/mount/mnt/cdrom,/sbin/umount/mnt/cdrom##允许users组的成员关闭此系统##允许“users”组的成员在本地运行/sbin/shutdown-hnow命令#%userslocalhost=/sbin/shutdown-hnow##从/etc/sudoers.d读取drop-in文件(这里的#不代表注释)##读取/etc/sudoers.d目录下所有文件的内容为aconfigurationembeddedinthisconfigurationfile##注意,后面的#后面不是注释#includedir/etc/sudoers.d为用户配置sudo权限[用户名][托管主机的IP]=([可以是的身份used])[NOPASSWD:][authorizedcommand][是管理主机的IP]、[可以使用的身份]、[authorizedcommands]都可以用ALL表示不限制。添加[NOPASSWD:]选项允许用户在不输入密码的情况下使用sudo权限。[授权命令]使用绝对路径,多个命令之间可以用逗号(,)隔开。示例:##Allowroottorunanycommandsanywhere##AllowroottorunanycommandanywhererootALL=(ALL)ALL为用户组配置sudo权限])[NOPASSWD:][授权命令][被管理主机的IP]、[可以使用的身份]、[授权命令]都可以用ALL表示不限制。添加[NOPASSWD:]选项允许用户在不输入密码的情况下使用sudo权限。用户组和用户的唯一区别是用户组前有一个%例子:##允许“wheel”用户组的成员运行所有命令,运行%wheel时不需要输入密码ALL=(ALL)NOPASSWD:ALL3。注意事项1)给用户sudo权限一定要谨慎,适可而止,不要给太高的权限2)【授权命令】设置得越具体,用户获得的权限越少。3)严禁赋予普通用户/usr/bin/passwd、/usr/bin/vi、/usr/bin/su、/usr/bin/bash命令权限。拥有这个权限的用户可以修改root用户密码,然后为所欲为。4)能力越大,责任越大。二、sudo命令介绍1、sudo[command]:要以root身份执行命令,用户必须具有相应命令的sudo权限。示例普通用户使用less命令查看root用户的历史命令[vagrant~]$sudoless/root/.bash_historycatreport.md|grep-v编号|awk'$4>=99{print$2}'catreport.md|grep-v编号|awk'$4<=99{print$2}'catreport.md|grep-v编号|awk'$4==100{print$2}'sed-n'2p'report.mdsed-n'2,4p'report.mdsed'2,4d'report.mdcat-nreport.mdsed'1aBegin'报告。mdsed'1iBegin'report.mdsed'1aBegin'report.mdsed'1aEnd'report.mdsed'1cHelloWorld'report.mdsed'5cHelloWorld'report.md...省略...2.sudosu:要切换到root用户,该用户必须具有/usr/bin/su命令的sudo权限。切换成功后,用户可以以root身份执行任何命令。比如普通用户使用sudosu命令切换到root用户,然后修改root用户的密码[vagrant/tmp]$sudosu[root/tmp]#passwd修改root用户的密码。新密码:无效密码:密码少于8个字符重新输入新密码:passwd:所有身份验证令牌已成功更新。3.sudo-s:不加,切换到root用户的shell,使用默认的shell。用户必须具有相应shell命令的sudo权限。以root身份执行任何命令。比如普通用户使用sudo-s/usr/bin/bash命令切换到rootshell,然后修改root用户的密码[vagrant/tmp]$sudo-s/usr/bin/bash[root/tmp]#passwd修改root用户的密码。新密码:无效密码:密码少于8个字符重新输入新密码:passwd:所有身份验证令牌已成功更新。可以不加,默认使用shell[vagrant/tmp]$sudo-s[root/tmp]#exit4。sudo-l:列出当前用户可用的sudo权限的命令示例[vagrant~]$sudo-l...省略部分内容...用户vagrant可以在本机运行以下命令:(ALL)/usr/bin/bash,/usr/bin/su,/usr/bin/less三、sudo权限的应用1、授权普通用户重启服务器执行visudo,然后添加如下内容user1ALL=(ALL)/sbin/shutdown-r现在切换到user1账户,查看user1可用的sudo权限[user1@10~]$sudo-l...省略部分内容...用户user1可以在10上运行以下命令:(ALL)/sbin/shutdown-rnow2.授权普通用户添加其他用户功能分析要添加其他用户,必须有添加用户和设置密码的权限,即/usr/sbin/useradd和/usr/bin/这两个命令的sudo权限passwd如果用户完全拥有/usr/bin/passwd的sudo权限,可以使用sudopasswd命令或者sudopasswdroot命令修改root密码,这样会变得很不安全。因此需要严格限制用户对/usr/bin/passwd的权限:userALL=(ALL)/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd"",!/usr/bin/passwdroot/usr/bin/passwd[A-Za-z]*表示passwd命令后追加的第一个字符只能是大小写字母。!/usr/bin/passwd""表示passwd命令后面不能加任何东西。!/usr/bin/passwdroot表示passwd命令后不能加root。三个语句缺一不可,顺序不能颠倒。实例执行visudo,然后添加如下内容user1ALL=(ALL)/usr/sbin/useradduser1ALL=(ALL)/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd"",!/usr/bin/passwdroot切换到user1账户,查看user1可用的sudo权限命令[user1@10~]$sudo-l...省略部分内容...用户user1可以在10上运行以下命令:(ALL)/usr/sbin/useradd(ALL)/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd\"\",!/usr/bin/passwdroot添加用户user2,并为其设置密码[user1@10~]$sudouseradduser2[user1@10~]$sudopasswduser2修改用户user2的密码。新密码:无效密码:密码是回文重新输入新密码:passwd:所有身份验证令牌已成功更新。[user1@10~]$grepuser2/etc/passwduser2:x:1006:1007::/home/user2:/bin/bash尝试通过passwd和passwdroot两种方式修改root用户的密码,均失败[user1@10~]$sudopasswd抱歉,用户user1没有权限在10.0.2.15上以root身份执行/bin/passwd。[user1@10~]$sudopasswdroot抱歉,用户user1没有权限以root身份在10.0.2.15上执行/bin/passwdroot。添加用户2_user,尝试为其设置密码,失败。因为/usr/bin/passwd[A-Za-z]*决定了passwd命令后追加的第一个字符只能是大小写字母。[user1@10~]$sudouseradd2_user[user1@10~]$sudopasswd2_user抱歉,用户user1没有权限在10.0.2.15上以root身份执行/bin/passwd2_user。