V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kaiser1992
V2EX  ›  Linux

Linux 如何设置用户 sudo 指定命令不需要密码,而其他命令需要输入密码?

  •  1
     
  •   kaiser1992 · 2018-09-16 22:26:01 +08:00 · 7635 次点击
    这是一个创建于 2258 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我发现当用户这个指定命令 sudo 不需要输入密码时,其他命令就不能 sudo 了,报错:
    Sorry, user xxxx is not allowed to execute 'sudo 命令' as root on xxx.

    除非设置所用命令不需要输入密码。

    那如何设置用户 sudo 指定命令不需要密码,而其他命令需要输入密码?
    16 条回复    2018-09-17 15:51:27 +08:00
    singerll
        1
    singerll  
       2018-09-16 22:37:32 +08:00 via Android
    没看太明白,sudo 都不用密码了,其他命令为什么还需要密码。。。
    hanbaobao2005
        2
    hanbaobao2005  
       2018-09-16 22:39:19 +08:00
    AngelCriss
        3
    AngelCriss  
       2018-09-16 22:41:33 +08:00 via Android   ❤️ 1
    你仔细看看 sudo 的权限就会发现这是个 setuid 程序,只不过加了密码验证而已。
    所以,你可以自己写一个,不需要密码验证即可。
    当然你也可以创建一个组,将某个用户加入这个组,在 sudo 的配置目录新建配置,写入"%yourgoup ALL=(ALL) NOPASSWD: ALL"即可
    kaiser1992
        4
    kaiser1992  
    OP
       2018-09-16 22:49:29 +08:00
    %yourgoup ALL=(ALL) NOPASSWD: ALL 是设置所有命令 sudo 都不需要密码,
    但当设置指定命令不需要密码如 %yourgoup ALL=(ALL) NOPASSWD: a 命令 ,现在只想 sudo a 命令不需要输入,其他命令仍希望 sudo 输入密码应该怎么设置呢?
    humansjl
        5
    humansjl  
       2018-09-16 23:01:51 +08:00
    sudo 可以指定命令啊,指定了就可以免密,没有的话 sudo 时就要密码,或者没有 sudo 的权限
    wml
        6
    wml  
       2018-09-16 23:06:02 +08:00
    指定单独命令免密,其他命令 sudo 报错 not allowed to execute as root
    wml
        7
    wml  
       2018-09-16 23:07:05 +08:00
    能否让其他命令 sudo 输入密码执行呢?
    pcmid
        8
    pcmid  
       2018-09-17 01:22:32 +08:00 via Android
    yemenchun1
        9
    yemenchun1  
       2018-09-17 06:36:48 +08:00 via iPhone
    哈哈,遇到过这个问题,你改下 sudoer 的内容,对于需要免密执行的命令程序加入 sudoer 里面就行了,比如 systemctl suspend 之类的
    yemenchun1
        10
    yemenchun1  
       2018-09-17 06:37:50 +08:00 via iPhone
    其实我没看懂你的问题,只看懂了最后一句
    msg7086
        11
    msg7086  
       2018-09-17 08:48:34 +08:00   ❤️ 5
    test ALL=(ALL) ALL
    test ALL=(ALL) NOPASSWD:/bin/ls


    test@debian-ws:/root/test$ sudo ls
    01
    test@debian-ws:/root/test$ sudo vim
    [sudo] password for test:
    test@debian-ws:/root/test$

    看到你的帖子我就猜到大部分人猜不出你想问什么。
    rrfeng
        12
    rrfeng  
       2018-09-17 10:01:29 +08:00 via Android
    哈哈哈这个知识点真的是许多人不知道
    rock6y
        13
    rock6y  
       2018-09-17 10:30:49 +08:00 via Android
    有很多发行版 Linux 都是直接在 Shadow 文件里去掉 x root 就不用输入密码了
    999V2
        14
    999V2  
       2018-09-17 14:27:54 +08:00
    @msg7086 看你回复的就知道是楼主想要的
    visitantzj
        15
    visitantzj  
       2018-09-17 14:52:38 +08:00
    哈哈,昨天刚百度过这问题……

    ssh 远程运行需要提权的脚本时候挺有用的
    wml
        16
    wml  
       2018-09-17 15:51:27 +08:00
    @msg7086 是这样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4112 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:11 · PVG 18:11 · LAX 02:11 · JFK 05:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.