ubuntu设置sudo免密

前提:有root权限

本质是修改/etc/sudoers 文件,但直接编辑这个文件容易改错造成系统异常,因此一般使用sudo visudo命令修改,这个命令保存时会检查文件格式,该命令会使用默认文本编辑器把/etc/sudoers 读到一个临时文件/etc/sudoers.tmp中,保存时再写入/etc/sudoers

临时切换默认文本编辑器

个人还是更熟悉vim,默认文本编辑器一般是nano,要设置成vim要设置环境变量

export VISUAL="vim"
export EDITOR="VISUAL"

执行

 sudo -E visudo

此时必须使用-E,-E会读取用户的环境变量,否则visudo还是使用nano

修改sudoers文件

配置sudo免密

执行sudo -E visudo ,此时将用vim打开/etc/sudoers ,文件默认内容如下

#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

因为我是个人使用,用户属于sudo用户组(查看自己的用户组执行groups命令),直接将sudo用户组设为不需要密码就行了,即第24行改为

%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

保存退出后,正常使用sudo执行具有root权限的命令就不需要密码了

这种修改方式会令sudo用户组的用户都能免密获得root权限,个人用户无所谓,如果要指定某个用户免密,就添加一行只给这个用户免密

soda   ALL=(ALL:ALL) NOPASSWD:ALL

soda就是这里指定的用户名,可以替换为实际的用户名

设置默认文本编辑器

经过前面的设置,默认编辑器暂时切换到vim,但下次登录再执行sudo -E visudo还是变回默认的nano编辑器,要永久生效有以下几种方法:

  1. 直接卸载nano,比较直接,没了nano,就只剩vim了,卸载命令sudo apt remove --purge nano

  2. 把环境变量添加到~/.bashrc用户环境变量文件中,这种情况下如果nano没有卸载执行visudo必须用-E选项,这个选项会读取设置的环境变量

  3. 直接把默认文本编辑器用sudo -E visudo设置到/etc/sudoers ,一劳永逸,在文件顶部Defaults配置添加一行把设置editor把vim的全路径写上保存,此时环境变量就不用管了:

Defaults     editor="/usr/bin/vim"

如果使用的是vim编辑器,/etc/sudoers 文件会有高亮提示,如editor写成了editors则高亮消失,更容易发现编辑错误

参考

  • vim - 在visudo时更改默认编辑器

你可能感兴趣的:(Linux系统配置,ubuntu,linux,运维,visudo,/etc/sudoers,默认编辑器)