GNU/Linux >> Belajar Linux >  >> Linux

Linux Setuid Tidak Berfungsi?

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;
}

Linux
  1. Perintah Rm Dalam Skrip Bash Tidak Bekerja Dengan Variabel?

  2. Mengapa `keluar &` Tidak Berfungsi?

  3. ssh-copy-id tidak berfungsi

  1. du perintah tidak mengurai direktori tersembunyi

  2. Mengapa regex ini tidak berfungsi di linux?

  3. ZFS di Linux, apakah itu berfungsi?

  1. Bagaimana cara kerja debugger di Linux?

  2. Mengubah kata sandi root tidak mengubah kata sandi sudo

  3. Bagaimana cara kerja alokasi tumpukan di Linux?