В вашем случае, я думаю, самое близкое, что вы можете получить, это что-то вроде:
%operator ALL = /bin/cat /var/log/messages*, !/bin/cat /var/log/messages*\ *
, который сначала разрешает /bin/cat
только если у него есть какая-либо "строка аргумента", начинающаяся с /var/log/messages
, а затем запрещает ту же самую "строку аргумента", если в любой точке есть пробел.
Это практически запрещает множественные аргументы для cat
, но, будучи основанным на "целой строке", не позволяет sudo cat /var/log/messages /var/log/messages.1
настолько, насколько не позволяет sudo cat /var/log/messages /etc/shadow
. Кроме того, это не позволяет допустимому имени файла иметь пробел, например. гипотетический файл /var/log/messages-with-' '-space
.
Чтобы все заработало, вам нужно создать 2 пары veth
пайпов. С одного конца они должны быть включены в мост. Мост и концы интерфейсов veth расположены в пространстве имен корневой сети. Другие концы каналов v1 и v2 находятся в пространстве имен n1 и пространстве имен n2 соответственно. Пример:
ip netns add n1
ip netns add n2
Концы, включенные в перемычку, будем называть bv1 и bv2:
ip link add v1 netns n1 type veth peer name bv1
ip link add v2 netns n2 type veth peer name bv2
ip link add br0 type bridge
ip link set br0 up
ip link set bv1 master br0
ip link set bv2 master br0
ip link set bv1 up
ip link set bv2 up
brctl show
bridge name bridge id STP enabled interfaces
br0 8000.d2dba1636571 no bv1
bv2
Перейти к n1:
nsenter --net=/var/run/netns/n1
ip addr add 192.168.0.2/16 dev v1
ip link set v1 up
ip link set lo up
exit
Перейти к n2:
nsenter --net=/var/run/netns/n2
ip addr add 192.168.0.3/16 dev v2
ip link set v2 up
ip link set lo up
exit
Результат:
ip netns exec n1 ping -c2 -I v1 192.168.0.3
PING 192.168.0.3 (192.168.0.3) 56(84) bytes of data.
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.265 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.220 ms
ip netns exec n2 ping -c2 -I v2 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.195 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.227 ms
IP-источник изменился, так как пакет прошел настройку NAT с iptables с помощью докера.
Это сделано потому, что другие машины в вашей сети (и в Интернете )не знают, где найти IP-адреса внутри вашей сети докеров. Поэтому вместо каждого исходящего пакета он изменился на IP-адрес вашего хост-компьютера.