Ping - это программа, которой владеет root с установленным битом идентификатора пользователя.
$ ls -l `which ping`
-rwsr-xr-x 1 root root 35752 Nov 4 2011 /bin/ping
Насколько я понимаю, если пользователь запускает процесс проверки связи, тогда эффективный идентификатор пользователя изменится с реального идентификатора пользователя (то есть идентификатора пользователя, запустившего процесс) на корневой идентификатор пользователя. Однако, когда я пытаюсь это сделать и посмотреть на вывод команды ps, чтобы увидеть, выполняется ли процесс ping от имени пользователя root, я все равно получаю реальный идентификатор пользователя.
ps -e -o user,ruser,euser,cmd,args | grep ping
sashan sashan sashan ping -i 10 -c 1000 www.goog ping -i 10 -c 1000 www.google.com
Ответы:
ping
нужен root, чтобы он мог открыть сокет в режиме raw. Это буквально первое, что он делает, когда запускается:Это единственное, для чего ему нужен root, поэтому, как и многие программы, он сразу же понижает уровень своих привилегий до вашей обычной учетной записи пользователя:
источник