我想在 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
我有一个用户“有限用户”,他是一个名为“的组织的成员”有限群体”
到目前为止我已经尝试过:
第一个解决方案 - 使用
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:
第二种解决方案 - 使用文件
/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