允许/拒绝普通用户“按需”的 ICMP(Sysctl、Sudo、/proc)

允许/拒绝普通用户“按需”的 ICMP(Sysctl、Sudo、/proc)

我想在 CentOS 7.8 上设置一个帐户,可以“按需”允许/拒绝 ping (icmp echo)。

以 root 身份登录非常有效,例如:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all >>> Ping on
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all >>> Ping off

我有一个用户“有限用户”,他是一个名为“的组织的成员”有限群体

到目前为止我已经尝试过:

  1. 第一个解决方案 - 使用sysctl 基于此线程: https://askubuntu.com/questions/692701/allowing-user-to-run-systemctl-systemd-services-without-password 我创建了一个文件/etc/sudoers.d/limited

    %limitedgroup ALL=NOPASSWD: /sbin/sysctl sysctl -w net.ipv4.icmp_echo_ignore_all=1
    %limitedgroup ALL=NOPASSWD: /sbin/sysctl sysctl -w net.ipv4.icmp_echo_ignore_all=0
    

    不幸的是,以受限用户身份登录,我仍然被要求输入密码:

    sudo sysctl -w net.ipv4.icmp_echo_ignore_all=1
    [sudo] password for limiteduser:
    
  2. 第二种解决方案 - 使用文件/proc/sys/net/ipv4/icmp_echo_ignore_all

    似乎不允许更改 /proc 文件系统的权限。 AFAIK 它是硬编码在内核中的。前任:

     [root@centOS ~]# setfacl -m u:limited:rwx /proc/sys/net/ipv4/icmp_echo_ignore_all
     setfacl: /proc/sys/net/ipv4/icmp_echo_ignore_all: Operation not supported
    

我也尝试过 chown、chmod - 没有机会。

答案1

你的 sudoers 行有sysctl两次。试试这个

%limitedgroup ALL=NOPASSWD: /sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=1
%limitedgroup ALL=NOPASSWD: /sbin/sysctl -w net.ipv4.icmp_echo_ignore_all=0

相关内容