Networking

允許/拒絕普通使用者的“按需”ICMP(Sysctl、Sudo、/proc)

  • February 5, 2021

我想在 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

我有一個使用者“ limiteduser ”,他是一個名為“ limitedgroup ”的組的成員

到目前為止我所嘗試的:

  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:
  1. 第二種解決方案 - 使用文件/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 - 沒有機會。

您的 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

引用自:https://unix.stackexchange.com/questions/632777