setuid bit ile kök sahipli program


13

Ping, kullanıcı kimliği biti ayarlanmış bir kök dizinidir.

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

Anladığım kadarıyla, bir kullanıcı ping işlemini çalıştırırsa, etkin kullanıcı kimliği gerçek kullanıcı kimliğinden (yani işlemi başlatan kişinin kullanıcı kimliği) kullanıcı kimliği köküne değişecektir. Ancak bunu denediğimde ve ping işleminin root kullanıcısı olarak çalışıp çalışmadığını görmek için ps çıkışına baktığımda, hala gerçek kullanıcı kimliği gösteriliyor.

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

Yanıtlar:


20

pingham modda bir soket açabilmesi için root gerekir. Bu tam olarak başladığında yaptığı ilk şey:

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

Kök için ihtiyacı olan tek şey budur, bu nedenle birçok program gibi ayrıcalık düzeyini hemen normal kullanıcı hesabınıza geri döndürür:

uid = getuid();
if (setuid(uid)) {
    perror("ping: setuid");
    exit(-1);
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.