//
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权限,这里没有讨论,更多详细内容大家可以上网了解。
周五了,希望大家享受美好的周末。晚安。
继续阅读与本文标签相同的文章
solr 学习
虚拟机安装win7 64位-完美解决-费元星
-
【原创】MyEclipse反编译添加jadclipse_3.3.0 曲折的完美解决
2026-05-26栏目: 教程
-
Spring框架之Filter应用
2026-05-26栏目: 教程
-
【shell mysql 导出数据到csv脚本,完美解决乱码转义符等问题】-费元星
2026-05-26栏目: 教程
-
关于Linux网络的几个命令介绍
2026-05-26栏目: 教程
-
【Linux搭建创建FTP服务器】---完美解决 - 费元星
2026-05-26栏目: 教程
