Можете ли вы указать iptables как пользователь без полномочий root и почему?

Согласование шаблонов выполняется с помощью операторов case во всех Bourne-подобных оболочках.

is_absolute() {
  case "$1" in
    ///* | //) true;;
          //*) false;; # on some systems, //foo is special and is
                       # not an absolute path. // alone is /
           /*) true;;
            *) false
  esac
}

Удалите первые две записи в системах, которые не обрабатывают //foo специальным образом.

5
10.08.2017, 04:15
2 ответа

Похоже, что iptablesнужны как CAP _NET _RAW, так и CAP _NET _ADMIN, чтобы иметь возможность читать таблицы. Я пытался

$ cp /usr/sbin/iptables ~/iptables  # note, it may be a symbolic link
$ sudo setcap CAP_NET_RAW,CAP_NET_ADMIN+ep  ~/iptables
$ ~/iptables  -nvL

и это было нормально.

7
27.01.2020, 20:34

Действительно, iptablesиспользует интерфейс netlink для связи с ядром. Он открывает сокет netlink для xtables, затем выдает команды через этот сокет. Контроль доступа осуществляется при открытии сокета, а не для отдельных команд, поэтому для вывода списка и изменения правил требуются одни и те же разрешения. Единственный способ разрешить пользователю перечислять правила, но не изменять их, — дать ему тщательно -написанный исполняемый файл setuid (или setcap ).

Было бы неплохо, если бы в /procбыл интерфейс к netfilter, но, насколько мне известно, задача его реализации так и не была завершена.

7
27.01.2020, 20:34

Теги

Похожие вопросы