sudo免密还需要输密码

一、问题现象

###使用sudo提示输入密码
[userread@test ~]$ sudo jstat -gcutil 69754 3000

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。

[sudo] userread 的密码:

二、解决思路

###使用sudo -l 查看拥有jstat的权限
[userread@test ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL
    PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC
    LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

用户 userread 可以在 test 上运行以下命令:
    (ALL) NOPASSWD: /bin/whoami, /bin/cat, /bin/head, /bin/tail, /bin/more, /bin/less, /bin/grep, /bin/jps, /bin/jstack, /opt/modules/jdk1.8.0_281/bin/jstat

###sudo jstat的绝对路径,发现可以执行,不需要密码
[userread@test ~]$ sudo /opt/modules/jdk1.8.0_281/bin/jstat -gcutil 153125 3000
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00  78.91  95.44  75.47  91.49  86.65   3239   33.086     6    1.454   34.540

###打印PATH发现有这个绝对路径
[root@test ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/data/software/jprofiler/bin:/opt/modules/jdk1.8.0_281/bin:/root/bin

解决方法:
把绝对路径做个软连接,软连接到/bin/目录下
[root@test ~]# ll /bin/jstat
lrwxrwxrwx 1 root root 35 1月  17 08:15 /bin/jstat -> /opt/modules/jdk1.8.0_281/bin/jstat

[root@test ~]# ll /opt/modules/jdk1.8.0_281/bin/jstat
-rwxr-xr-x. 1 10143 10143 8832 12月  9 2020 /opt/modules/jdk1.8.0_281/bin/jstat

原因:

img

posted @ 2024-01-19 10:44  wh459086748  阅读(228)  评论(0)    收藏  举报