Bazen kodda. Örneğin, ortasında hwclock.c
:
if (getuid() == 0)
permitted = TRUE;
else {
/* program is designed to run setuid (in some situations) */
if (set || systohc || adjust) {
warnx(_("Sorry, only the superuser can change "
"the Hardware Clock."));
[...]
Kökseniz veya olmasanız programın davranışını değiştirecektir.
Diğer çoğu durumda, örtüktür; çekirdeğe devredildi. Örneğin, program sistemi yeniden başlatmanıza izin veren sistem çağrısını çağırırsa , yalnızca kökseniz çalışır. Kök değilseniz, uygulamanın (iyi yazılmışsa) size bildirdiği bir "izin reddedildi" hatasıyla karşılaşırsınız. Veya bir dosyayı silmeye çalışıyorsunuz; dosya üzerinde doğru izne sahipseniz başarılı olur; değilse, kök olup olmadığınıza bağlıdır - çekirdek rm
çağrıldığında unlink()
izinleri kontrol eder.
Yani hayır, prensip olarak, program kök ayrıcalıkları gerektiriyorsa veya istemiyorsa, sadece yürütülebilir dosyanın iznine bakarak diyemezsiniz. Birçok program sadece bazı işlemler için bunları gerektirecektir, bu nedenle böyle bir şey yapmak gerçekten zor olacaktır. Davası hwclock
bir (kimse saatini okuyabilir ancak yalnızca kök ayarlayabilirsiniz) 'dir, ancak bunların yüzlerce ( kill
, rm
, cat
...)
Sonra setuid programlarının ilgili ve ilginç dünyası var ...
/bin
veya/sbin
dizinleri yürütebilirsiniz . Sorun, bu programlardan bazılarının hangi kullanıcının çalıştırdığına bağlı olarak farklı çalışmasıdır.