Komut dosyalarında setuid'i etkinleştirmenin güvenlik sorunları olduğunu ve bu nedenle varsayılan olarak etkin olmadığını biliyorum, ancak yürütülebilir dosyalar için çalışmasını bekliyoruz. Bu yazıda açıklanan talimatları izleyerek uid çıktı olarak gösteren ve çalıştırılabilir yürütülebilir: Kabuk komut dosyalarında setuid izin
Ancak çalıştırmadan önce ve sonra aynı uid (1000) değerini döndürür sudo chmod +s ./setuid-test
. Bence bu setuid'in çalıştırılabilirim üzerinde herhangi bir etkisi olmadığı anlamına geliyor, neden ve nasıl çözülecek?
Kaynak kodu:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
İle inşa edildi ve çalıştırıldı
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Koşarken ls -la
, ben ne olsun:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- döndürür -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
ardından, montaj noktasını bulmak için dizindeki mount | grep nameofmountpoint
. Orada nosuid
listelenen bir bayrak var mı?