chmod und anschließend rm



  • Hallo,
    ich habe gerade ein Programm geschrieben dass die rechte einfach ändert einer datei..und gleich darauf die datei löschen soll. Aber sobald ich die rechte ändere kann ich nicht mehr löschen. Wieso das ?



  • Die Dateirechte sind irrelevant f"urs L"oschen. Relevant sind nur die Rechte des Verzeichnisses.



  • Ja aber wenn ich folgendes tun will:

    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[])
     {
            char *ch_argv[] = {"/bin/chmod","-v","777","file.txt",0};
            char *rm_argv[] = {"/bin/rm","-f","file.txt",0};
            execv("/bin/chmod",ch_argv);
            execv("/bin/rm",rm_argv) ;
            return 0;
     }
    

    dann geht das removen nur wenn ich vorher die Zeile mit dem rechtesetzen auskommentiere ?

    Warum kann ich nicht löschen nachdem ich die Rechte gestzt habe?



  • Der Teil des Programms wird doch gar nicht mehr ausgef"uhrt, exec* _ersetzt_ den aktuellen Prozess.



  • Zumal die Rechte des Verzeichnisse auch eine Rolle spielen, wirst du exec* so nicht benutzen können. Da musst du man: fork(2) benutzen, so in etwa:

    #include <sys/wait.h>
    #include <sys/types.h>
    #include <unistd.h>
    
    int main()
    {
        int status;
    
        switch(vfork())
        {
             case -1:
                       perror("vfork()");
                       break;
             case 0:
                       exec*_funktion_ausführen
        }
    
        wait(&status);
    
        return 0;
    }
    

Anmelden zum Antworten