Какой сценарий может позволить обычным пользователям использовать сетевые пространства имен?

Для этой строки это преобразование должно работать:

sed 's|.*/\(.*\)/.*/\(.*\)/\(.*\)/\(.*\)\.png\(...\)\(....\)|\1,\2,\3,\4,\5\,\6|'

Если другие строки не соответствуют формату, вы столкнетесь с проблемами - в том числе, если последние две части имеют разную длину.

22
19.09.2017, 07:46
3 ответа

Лично я не знаю, есть ли возможность разрешить обычным пользователям запускать команды в разных сетевых пространствах имен, но этот аннотированный сценарий оболочки может лучше удовлетворить ваши потребности:

#!/bin/bash
# ip netns wrapper script, nns.
# Usage: nns nsname cmdline

case "${1}" in
    do)
        shift # remove "do"
        NSNAME="${1}" # remember nsname
        shift # remove nsname to get argument list for su -c
        [ -z "${NSNAME}" -o -z "${1}" ] && exit 1 # if either nsname or arglist is empty - error out
        echo ip netns exec "${NSNAME}" su "${SUDO_USER}" -c "${*}" # execute, ${*} merges separate arguments into single word for su/sh -c parsing. See with strace.
    ;;
    *)
        SCRIPTNAME="${0}" # remember script full path
        exec sudo "${SCRIPTNAME}" do "${@}" # run it through sudo with elevated privileges
    ;;
esac

Установите его где-нибудь в / usr / bin и позвольте пользователям запускать его.

0
27.01.2020, 19:43

Решение 1

Просто добавьте группу с именем «netns» и добавьте в нее всех нужных пользователей. Затем передайте право собственности на root:netns и предоставьте группе права чтения/исполнения.

Другими словами:

# New group netns
sudo groupadd --system netns

# Add root to "netns", not sure if needed
sudo usermod -aG netns root

# Do this for every needed user
sudo usermod -aG netns $UserName

# Change ownership to root, grant rw acces to group netns
sudo chown root:netns /path/to/netns-exec.sh
sudo chmod 633 /path/to/netns-exec.sh

Решение 2

Это решение проще, вам нужно отредактировать файл sudoers, как показано в этом примере.

user ALL=(ALL) /bin/ip netns
2
27.01.2020, 19:43

Пожарная тюрьмаможет сделать работу

firejail --noprofile --netns=nameOfNetSpace command

В качестве альтернативы Netns -Exec , Nsutils и Netnsне требует root

3
27.01.2020, 19:43

Теги

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