Saya tahu bahwa mengaktifkan setuid pada skrip memiliki masalah keamanan dan karenanya tidak aktif secara default, tetapi berharap itu berfungsi untuk executable. Saya membuat dan dapat dieksekusi yang menampilkan uid sebagai output mengikuti instruksi yang dijelaskan dalam posting ini: Izinkan setuid pada skrip shell
Tetapi mengembalikan uid yang sama (1000) baik sebelum dan sesudah berjalan sudo chmod +s ./setuid-test
. Saya pikir ini berarti setuid tidak memiliki efek pada executable saya, mengapa dan bagaimana menyelesaikannya?
Kode sumber:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Dibangun dan dijalankan bersama
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Saat berlari ls -la
, inilah yang saya dapatkan:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- mengembalikan -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
direktori untuk menemukan titik mount, lalu mount | grep nameofmountpoint
. Apakah ada nosuid
bendera yang terdaftar di sana?