Linux中配置sudo免密钥

//

Linux中配置sudo免密钥

//

今天周五,又是一个周中最美好的时候,因为明天不用上班啊,可以干自己想干的事情,想想就激动的不行。

匆匆忙忙的过了一个周,虽然每天早出晚归,但是很多工作还是没有做完,可能工作效率和工作方法上还有待提升吧,还是要多总结,多反思才能达到事半功倍的效果。

今天写一点简单的东西,是关于Linux的,我们在使用Linux系统命令的时候,经常需要sudo权限,使用sudo+命令的方式,可以让你的命令获取上层的root权限之后去执行这个命令。关于这个特点,还有个段子,我贴在这里,大家笑一笑即可:

男:我喜欢你!

女:抱歉,我有喜欢的人了。

男:sudo 你喜欢我。

女:好的。

男:我喜欢你。

女:我也喜欢你。

这个段子完美的诠释了sudo命令的功能。

在使用sudo命令的时候,如果没有进行特殊的配置,会有下面的提示:

[root@dba-mysql ~]# su - mysql
[mysql@dba-mysql ~]$ sudo su - root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for mysql: 

一般需要你输入root用户的密码才可以使用,而输入密码之后,只能临时的使用,当你下一次使用的时候,依旧提示输入密码,这还是比较麻烦的。显然,取消这个密码输入的过程可以带来很大的便捷。

要配置免密码登陆,我们首先打开/etc/sudoers这个文件,找到root账号的位置,如下:

## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL

可以看到,root用户是可以使用任何命令的,如果你试图修改这个文件,会得到提示这个是个只读的文件,当然你可以修改文件权限去强制修改它。但是我们添加自己自定义的用户的最好方式是什么呢?可以看这个/etc/sudoers文件的最后面写了一句话:

## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d

这句话提示的意思是该文件会包含/etc/sudoers.d目录下的任何文件,也就是说,我们可以在/etc/sudoers.d目录下创建任何我们想要的文件来配置某个账户的免密码sudo权限。事实上,当你查看/etc下面的sudo相关的文件时,是可以看到这个目录的:

[root@dba-mysql etc]# ll /etc/sudo* 
-rw-r-----  1 root root 1786 Sep 25  2012 /etc/sudo.conf
-r--r-----  1 root root 3729 Aug 23  2017 /etc/sudoers
lrwxrwxrwx  1 root root   23 Jun  6  2017 /etc/sudo-ldap.conf -> /etc/openldap/ldap.conf

/etc/sudoers.d:
total 8
-rw-r--r-- 1 root root 70 May 26  2015 20_nrpe_check_yum
-rw-r--r-- 1 root root 88 Oct 31  2018 99-ansible-ops

可以看到,我这个目录下面放了两个文件,这两个文件中的内容都是类似的,形式是:

[root@dba-mysql /etc/sudoers.d]#cat 99-ansible-ops 
dba_mysql    ALL=(ALL)       NOPASSWD:ALL
dba_redis    ALL=(ALL)       NOPASSWD:ALL

也就是直接配置上类似上述所示的命令行即可,这里需要注意的是,配置的过程中需要修改文件的属性为755或者更高的权限,否则会提示文件为只读文件。修改的过程如下:

[root@dba-mysql sudoers.d]# ll
total 8
-rw-r--r--. 1 root root 70 Aug 25  2017 20_nrpe_check_yum
-rw-r--r--  1 root root 42 Jul 17 14:06 99-ansible-ops
[root sudoers.d]# chmod 777 99-ansible-ops 
[root sudoers.d]# vim 99-ansible-ops 
[root sudoers.d]# chmod 440 99-ansible-ops 

我们按照上面的样子配置一个mysql用户的记录,如下:

[root@dba-mysql ~]# cat /etc/sudoers.d/99-ansible-ops 
dba_mysql    ALL=(ALL)       NOPASSWD:ALL
dba_redis    ALL=(ALL)       NOPASSWD:ALL
mysql    ALL=(ALL)       NOPASSWD:ALL

到这里,配置就算完成了,重新使用sudo su - root的命令,可以看到:

[mysql@dba-mysql ~]$ sudo su - root
[root@dba-mysql ~]# 

已经切换到root用户下面了,而没有提示输入密码。

总结一下:

在我们需要使用sudo权限的时候,需要配置/etc/sudoers.d目录下面的文件,在其中补充上我们需要的用户名称即可。

当然,还可以指定目录然后仅获取该目录的sudo权限,这里没有讨论,更多详细内容大家可以上网了解。

周五了,希望大家享受美好的周末。晚安。

本文分享自微信公众号 - DBA随笔(gh_acc2bbc0d447)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券