Saya belajar linux suid, jadi saya telah menulis program c kecil dengan konten berikut untuk mengujinya
#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 test
test.txt
adalah file yang hanya dapat dimodifikasi oleh root
-rw-r----- 1 root root
Jika saya menjalankan program pengujian dengan akun pengguna, itu harus menambahkan 100
ke file kosong.
Tapi, itu keluar:
sh:test.txt:Permission denied
Mengapa?
Jawaban yang Diterima:
Masalahnya adalah, Anda memanggil fungsi system()
, yang memanggil shell /bin/sh
. Dan shell /bin/sh
tidak memiliki set bit suid. Itu sebabnya mencetak Permission denied
pesan.
Anda harus menulis bagian dalam kode c murni:
int main() {
FILE *fd = fopen("test.txt", "a");
fprintf(fd, "%s", "100");
fclose(fd);
return 0;
}
Buat Direktori Target Saat Mengekstrak Tarball?
Cara Memahami Daftar Soundcard; Arti Mid, Hdmi, Pch?