案例-配置sudo用户免密功能(工作实战-亲测成功-20210410)
作者:互联网
案例-配置sudo用户免密功能(工作实战-亲测成功-20210410)
在有些场景下,比如在脚本中,不希望每次执行sudo命令时都输入自己的密码,可以通过NOPASSWD实现此功能。
另,关于自己工作中配置sudo用户免密功能,遇到了很多坑,这里记录下,方便大家look。
1、自己遇到的坑
关于如何配置sudo用户免密功能,百度搜了下,无非就是配置参数NOPASSWD。但配置在哪里,就很关键了。这里也是很多小伙伴踩坑的地方。
如果配置在root行下面,经实际测试是不能实现sudo免密功能的,需要再配置下%wheel组,这样才会实现免密功能,很无语。看网上给出的原因,是单单配置了用户时不生效的,还需要再配置下wheel组才行。但如果配置了组wheel的话,那么该组下的任何sudo成员都会具有sudo免密功能的。这里总感觉权限被过于被放大。
下面是实际的测试过程:
(1)只在root行下面配置某用户的sudo免密 => 经实际测试,用户sudo免密功能是不会生效的。
vim /etc/sudoers #root用户进行配置sudoers内容
注意:在shell终端不断连情况,等待5min后:再次进行登录icnoc用户,测试第一次登录是否需要密码?–>需要密码!
注意:每打开一次shell第一次都需要输入密码;
由以上现象可知=> 这种方法并不能实现sudo免密功能!!!
但是
(2)如果仅仅直接把NOPASSWD参数配置在%wheel层面(这里就不用再单独针对用户配置NOPASSWD参数) => (所有sudo用户都是免密的,这个是一劳永逸的!)
测试过程如下:
vim /etc/sudoers #root用户进行配置sudoers内容
重新用icnoc用户登录机器,查看现象:
由以上现象可知=> 这种可以实现sudo免密功能。
虽然,直接在wheel组层配置NOPASSWD参数可以实现sudo用户免密功能,但是这里总感觉权限过于被放大,因此自己工作中建议选择如下配置方法(即简单又安全)。
2、推荐配置方法(重要)
注意,这种方法也是配置在用户层面,但是是直接追加在/etc/sudoers文件末尾的,经测试,也是可以实现sudo用户免密功能的。
实际过程如下:
经测试:这种直接追加配置到末尾的方法很实用,可以实现sudo免密功能,也方便脚本编写。
- 另:自己工作中实现写的sudoers文件内容如下,大家可以参考下:
[icnoc@test-centos78-template ~]$ sudo grep ^[^#] /etc/sudoers
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
Defaults log_host,log_year,logfile=/var/log/sudo.log
Defaults: jt_DCMonitor !requiretty
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/lvdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/vgdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/pvdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/lvscan
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/vgscan
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/pvscan
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/lvs
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/vgs
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/pvs
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/dmidecode
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/fdisk -l
jt_DCMonitor ALL=(root) NOPASSWD:/usr/sbin/smartctl
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/lvdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/vgdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/pvdisplay
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/lvscan
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/vgscan
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/pvscan
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/dmidecode
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/fdisk -l
jt_DCMonitor ALL=(root) NOPASSWD:/sbin/smartctl
jt_DCMonitor ALL=(root) NOPASSWD:/bin/cat
jt_DCMonitor ALL=(root) NOPASSWD:/bin/rm -f ./jtdc_rw_tmp_file
jt_DCMonitor ALL=(root) NOPASSWD:/usr/bin/tee ./jtdc_rw_tmp_file
jt_DCMonitor ALL=(root) NOPASSWD:/usr/bin/tail
icnoc ALL=(ALL) NOPASSWD:ALL
[icnoc@test-centos78-template ~]$
3、其它(扩展部分)
注意:也可以对单个命令进行配置sudo免密功能(比较少用)
- 使用方法:
[root@test ~]# visudo
HG ALL= /bin/mount,/bin/umount,sudoedit,NOPASSWD:/bin/cat /var/log/messages #注意,哪个命令需要免密就在前面加上NOPASSWD:即可,其他没加这个参数的命令再次使用依然需要输入自己的密码的
- 测试过程:
测试过程:
[wang@test ~]$ ll /var/log/messages
-rw------- 1 root root 90047 Feb 13 17:57 /var/log/messages
[wang@test ~]$ cat !$
cat /var/log/messages
cat: /var/log/messages: Permission denied
[wang@test ~]$ sudo cat /var/log/messages
Sorry, user wang is not allowed to execute '/bin/cat /var/log/messages' as root on test.
[wang@test ~]$ sudoedit /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
wang ALL= /bin/mount,/bin/umount,sudoedit,NOPASSWD:/bin/cat /var/log/messages #添加NOPASSWD参数
[wang@test ~]$ sudo cat /var/log/messages
[wang@test ~]$
Feb 13 17:59:56 test prometheus: level=warn ts=2021-02-13T09:59:56.561Z caller=scrape.go:1094 component="scrape manager" scrape_pool=prometheus target=http://localhost:9090/metrics msg="Appending scrape report failed" err="out of bounds"
Feb 13 17:59:58 test prometheus: level=warn ts=2021-02-13T09:59:58.995Z caller=scrape.go:1094 component="scrape manager" scrape_pool=node2 target=http://192.168.10.12:9100/metrics msg="Appending scrape report failed" err="out of bounds"
4、总结
一般工作中,机器需要被基线加固,sudo功能还是比较常用的,其中sudo免密功能也是非常实用的,关于sudo用法,我将会在后续文章中输出到博客上。
好了,今天的简单分享就到这里了,good night!
标签:DCMonitor,免密,jt,20210410,sudo,sbin,NOPASSWD,root 来源: https://blog.csdn.net/weixin_39246554/article/details/115586109