On Sat, Nov 20, 2021 at 01:39:38PM +0400, Алексей Витальевич Коротков wrote:
> Вложил ping.txt от команды
> LANG=en_US.UTF-8 ping -c 1 192.168.1.1 > ping.txt 2>&1
Вот это
capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, NULL) = 0
capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=0,
+inheritable=0}) = 0
capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, NULL) = 0
capset({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=0,
+inheritable=0}) = 0
prctl(PR_SET_KEEPCAPS, 1) = 0
getuid() = 1000
setuid(1000) = 0
prctl(PR_SET_KEEPCAPS, 0) = 0
getuid() = 1000
...
socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) = -1 EACCES (Permission denied)
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) = -1 EPERM (Operation not permitted)
совершенно закономерно: видно, что "strace ping ..." запускается не от
рута, а под uid/gid=1000/1000), а в таком случае при запуске под strace
на применяются capabilities, соответственно capget не выдаёт, а capset
не ставят нужную CAP_NET_RAW, в результате не удаётся создать raw socket,
необходимый для пинга -- последний вызов socket() выдаёт EPERM.
Насколько я понимаю, ping без strace исправно работает под этим uid/gid,
хоть и ругается на ipv6.
Интересно, давно ли перезагружался компьютер. :)
И поскольку говорилось о наличии рядом другого компьютера с рабочей
системой, предлагаю сравнить diff-ом выдачу "sysctl -a" с этих компов.
Разумеется, отсекая всё что не относится к сети.
--
Eugene Berdnikov