корневая программа с битом setuid

Ping – это программа, принадлежащая root с установленным битом идентификатора пользователя.

$ ls -l `which ping` -rwsr-xr-x 1 root root 35752 Nov 4 2011 /bin/ping 

Насколько я понимаю, если пользователь запускает процесс ping, то действительный идентификатор пользователя будет меняться от реального идентификатора пользователя (то есть идентификатора пользователя лица, который запустил процесс) к корню пользователя id. Однако, когда я пытаюсь это сделать и смотрю на вывод 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 

One Solution collect form web for “корневая программа с битом setuid”

ping требует root, чтобы он мог открыть сокет в необработанном режиме. Это буквально первое, что он делает, когда он запускается:

 icmp_sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); socket_errno = errno; 

Это единственное, что ему нужно для root, так как многие программы сразу же понижают свой уровень привилегий до вашей обычной учетной записи пользователя:

 uid = getuid(); if (setuid(uid)) { perror("ping: setuid"); exit(-1); } 
  • suid executibles работают только тогда, когда они присутствуют в системе PATH
  • Apache suexec не будет работать с strace
  • Set-uid исполняемый и результирующий пользователь процесса
  • Использование find -perm для поиска файлов setuid
  • Опция mount noexec подразумевает nosuid?
  • Как настроить скрипт для запуска с правами неинтерактивно?
  • Почему не работает setuid с mount?
  • Как заставить пользователей устанавливать списки управления доступом в каталогах, которыми они не владеют?
  • Как PAM проверяет пароль пользователя в непривилегированных процессах?
  • используя бит SUID для сброса привилегий
  • Как suid iwconfig на Debian wheezy?
  • Linux и Unix - лучшая ОС в мире.