GNU/Linux >> Tutoriels Linux >  >> Linux

Linux Setuid ne fonctionne pas ?

J'apprends linux suid, j'ai donc écrit un petit programme en c avec le contenu suivant pour le tester

#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 est un fichier qui ne peut être modifié que par root

-rw-r----- 1 root root 

Si j'exécute le programme de test avec un compte utilisateur, il doit ajouter 100 au fichier vide.
Mais, il sort :

sh:test.txt:Permission denied

Pourquoi ?

Réponse acceptée :

Le problème est que vous appelez la fonction system() , qui appelle un shell /bin/sh . Et le shell /bin/sh n'a pas de jeu de bits suid. C'est pourquoi imprime le Permission denied message.

Vous devez écrire la partie en code C pur :

int main() {
  FILE *fd = fopen("test.txt", "a");
  fprintf(fd, "%s", "100");
  fclose(fd);
  return 0;
}

Linux
  1. La commande Rm dans le script Bash ne fonctionne pas avec la variable ?

  2. Pourquoi `exit &` ne fonctionne pas ?

  3. ssh-copy-id ne fonctionne pas

  4. la commande du n'analyse pas les répertoires cachés

  5. Changer le mot de passe root ne change pas le mot de passe sudo

Linux – Arch Linux :Pacman ne fonctionne pas lors du chroot ?

Linux - Comment fonctionne l'affichage de Linux ?

Comment fonctionne la mémoire d'échange sous Linux ?

Comment fonctionne un débogueur sous Linux ?

Comment fakeroot n'est pas une faille de sécurité sous Linux ?

Comment fonctionne l'affichage de Linux ?