作者:阳光映像YGYX | 来源:互联网 | 2023-09-02 17:49
一、应用场景1、一般情况下如果一台服务器涉及到多人管理的时候,需要每人都会有一个自己的账户,但是默认普通用户需要部分超级管理员的权限,有人说直接su-root切换到超级管理员上就可以了,
一、应用场景
1、一般情况下如果一台服务器涉及到多人管理的时候,需要每人都会有一个自己的账户,但是默认普通用户需要部分超级管理员的权限,有人说直接su - root切换到超级管理员上就可以了,那日志怎么审核,这样过大家都知道root的用户密码,最初的目的就没有达到,所以引出了一个sudo的命令。
2、sudo命令的优点:
1、给普通账户部分管理员的权限不需要root密码,只需要自己的密码就行。
2、可以根据工作内容的相同,实现权限分组管理(很方便)
3、方便日志审核
二、使用方法
科普小知识,su命令切换的时候su和su -的区别是,su - 会把需Shell环境变量一起都切过去,而su只会把身份切换过去。一般情况下我们习惯使用su - 。
1、在root命令下执行visudo或者直接vi /etc/sudoers即可,打开的是同一个配置文件。
2、第一种使用方法:
1、首先在root下面建立一个普通账户,设置密码(记得要允许登录,否则毫无意义),具体新建用户的方法就不在这里赘述了。
2、这里我们给这个普通用户可以查看/etc/shadow这个密码文件和重启服务器权限,首先找到root ALL=(ALL) ALL,在这行下加上如下内容:
leihaidong ALL=/sbin/init 6,/bin/cat /etc/shadow
3、这样我们使用su - leihaidong命令切换到这个普通用户下后执行sudo init 6 和cat /etc/shadow命令了,注意,如果提示你输入输入用户名密码,切记这里输入的是你当前登录的自己的用户名密码。这样就简单实现了,如果你想给更多的权限,就在后面追加,以逗号隔开。
4、如果有些命令不需要输入密码,有些又需要输入密码,可以这么写,但是这么写又特别繁琐。
leihaidong ALL=NOPASSWD:/sbin/init 6,PASSWD:/bin/cat /etc/shadow
3、这一长串命令代表什么呢?
1、第一列:用户名,也就是需要授权的用户名。
2、被管理主机的地址,这里可以写IP地址,一般情况下ALL即可。
3、(ALL)指的是可使用的身份,这里如果写ALL的话,代表拥有root权限。
4、授权命令,也就是要执行命令的绝对路径,可以使用which命令查看。
提示:正常情况下大多都是想前面我提到的那两种写法。
4、第二种使用方法:
1、首先我们先想一个场景,同10个用户都会做同样的一些工作,按照上面我那种写法,就得写10行,改动起来比较繁琐,试想一下,如果我们单独写一个模板,然后建设一个组,把这些用户都加到组里面,最后让这个组使用我们单独写的这个授权模板,这样只需要加组即可实现授权。
2、还是上面的案例,我们先创建一个组,然后把leihaidong这个账户加到新建组里面。
groupadd testgroup #新建组
usermod -G testgroup leihaidong #将leihaidong加入testgroup组中
3、在root下执行visudo修改授权(写删除第一种授权方法),
在文件51行附近加上下面两句,第一句是注释下面这个模板是做什么用的,第二行是新建模板INIT,这个模板授权可以重启和查看/etc/shadow文件的权限。如果不想或者强制每次执行某个命令需要输入当前用户密码,这里就不能使用这种方法了,只能一个一个写了。
##test sudo init 6
Cmnd_Alias INIT =/sbin/init 6,/bin/cat /etc/shadow
4、执行有了模板,还需要让新建的testgroup这个组应用INIT这个授权模板。在文件中%wheel ALL=(ALL) ALL这行下面加入%testgroup ALL=(ALL) INIT这行命令保存退出即可(写法有误会提示你保存不了)
5、解释这句话的意思,%代表他后面的这个字符是一个linux组,第二列的个ALL和第三列的(ALL)就不解释了,看上面。后面这个INIT指的是INIT这个授权模板名。注意,当然也可以写成%testgroup ALL= INIT
6、如果应用多个授权模板,模板之间用逗号隔开。