Я запускаю среду vserver с несколькими виртуальными машинами. Одна виртуальная машина имеет следующую проблему:
$ ping 8.8.8.8
ping: icmp open socket: Operation not permitted
$ ls -l $(which ping)
-rwsr-xr-x 1 root root 30736 2007-01-31 00:10 /bin/ping
$ whoami
root
$ mount
/dev/hdv1 on / type ufs (defaults)
none on /proc type proc (0)
none on /tmp type tmpfs (size=16m,mode=1777)
none on /dev/pts type devpts (gid=5,mode=620)
$ uname -a
Linux v-web1 2.6.27.55-vs2.3.0.36.9 #1 SMP Tue Apr 28 11:35:00 CEST 2015 i686 GNU/Linux
Обратите внимание, что на хост-машине, а также на всех остальных виртуальных машинах, Ping работает нормально.
Кто-нибудь может мне помочь, пожалуйста?
TL; Версия DR: переустановить iputils-ping
Я видел в Интернете, где предлагалось использовать
chmod u+s $( which ping );
Однако это позволит пользователю изменить предварительную загрузку и флуд. Это может привести к тому, что ПОЛЬЗОВАТЕЛЬ сможет выполнить отказ в обслуживании либо на вашем локальном компьютере, либо на другом компьютере, либо в вашей сети.
Я попытался что предложил @ nabil-bourenane, переустановка iputils-ping
который решил проблему для меня и не имеет установленного бита SUID.
username@server:~$ ls -l $( which ping );
-rwxr-xr-x 1 root root 44104 Nov 8 2014 /bin/ping
Если бит SUID установлен, он будет выглядеть как
username@server:~$ ls -l $( which ping );
-rwsr-xr-x 1 root root 44104 Nov 8 2014 /bin/ping
Извините, я не могу комментировать. Эта проблема возникла у меня после того, как я распаковал архив работающей системы при минимальной установке.
Все вышеперечисленные ответы работают. Но вариант, предложенный @Nabil Bourenane и @Linx, предпочтительнее из соображений безопасности. Чтобы ответить на комментарий @rexkogitans, здесь я цитирую iputils-ping.postinst (/ var / lib / dpkg / info / ...)
if command -v setcap > /dev/null; then
if setcap cap_net_raw+ep /bin/ping; then
chmod u-s /bin/ping
else
echo "Setcap failed on /bin/ping, falling back to setuid" >&2
chmod u+s /bin/ping
fi
else
echo "Setcap is not installed, falling back to setuid" >&2
chmod u+s /bin/ping
fi
который в основном говорит при настройке iputils-ping, сначала попробуйте setcap, а если это не удастся, используйте chmod u + s. Поэтому переустановка iputils-ping работает.
Решение состоит в том, чтобы настроить возможности системы Linux, чтобы разрешить использование сырых сокетов на хост-машине.
Поскольку это проблема, очень специфичная для v-сервера, решение состоит в создании однострочного файла с именем /etc/vservers/VMNAME/bcapabilities
:
NET_RAW
и перезагрузите виртуальную машину.