Ändern der Lese- / Schreibberechtigungen für einen Dateideskriptor

8

Ich arbeite an einem Linux-C-Projekt und habe Probleme beim Arbeiten mit Dateideskriptoren.

Ich habe einen Waisen-Dateideskriptor (die Datei war open () 'd dann unlink ()' d, aber die fd ist immer noch gut), die schreibgeschützte Erlaubnis hat. Die ursprüngliche Sicherungsdatei hatte vollständige Berechtigungen (erstellt mit S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH), aber leider wurde die Datei mit O_WRONLY geöffnet. Ist es möglich, den Dateideskriptor zu duplizieren und die Kopie in O_RDWR zu ändern?

psudocode:

%Vor%

Vielen Dank im Voraus! -Andrew

    
Andrew Klofas 09.01.2011, 03:29
quelle

1 Antwort

6

Nein, es gibt keine POSIX-Funktion, um den Öffnungsmodus zu ändern. Sie müssen es im Lese- / Schreibmodus öffnen. Da Sie jedoch eine temporäre Datei erstellt haben, empfehle ich Ihnen dringend, mkstemp zu verwenden. Diese Funktion öffnet die Datei ordnungsgemäß im Lese- / Schreibmodus und entkoppelt sie . Vor allem vermeidet es eine Race-Bedingung beim Benennen und Erstellen der Datei, wodurch eine Schwachstelle bei der Erstellung von temporären Dateien vermieden wird.

    
Michael Aaron Safyan 09.01.2011, 03:38
quelle

Tags und Links