GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der sicherste Weg, um das Schließen eines Dateideskriptors zu erzwingen

Öffnen Sie /dev/null mit O_WRONLY, dann dup2, um den problematischen Dateideskriptor zu schließen und seinen Deskriptor für /dev/null wiederzuverwenden. Auf diese Weise schlagen alle Lese- oder Schreibvorgänge in den Dateideskriptor fehl.

Wenn Sie einen Deskriptor auf /dev/null kopieren , alle Schreibvorgänge werden nicht fehlschlagen , aber erfolgreich , und die Lesevorgänge werden erfolgreich sein und 0 zurückgeben (eof).

Dies kann oder kann nicht das sein, was Sie wollen.

Unter Linux können Sie auch eine Datei mit flags =3 (O_WRONLY|O_RDWR auch bekannt als O_NOACCESS ), was dazu führt, dass alle Lese- oder Schreibvorgänge mit EBADF fehlschlagen .

Die Datei ist nur für ioctls verfügbar – was eine Gefahr aufwirft, die in den anderen Antworten und Kommentaren nicht erwähnt wurde:Lese- und Schreibvorgänge sind nicht die einzigen Operationen, die an Dateideskriptoren ausgeführt werden. (was ist mit lseek oder ftruncate ?).

Aktualisierung:

Ich habe etwas Besseres als den undokumentierten O_WRONLY|O_RDWR gefunden :O_PATH = 010000000 / 0x200000 . Gemäß der open(2)-Manpage:

O_PATH (since Linux 2.6.39)
     Obtain a file descriptor that can be used for two  purposes:  to
     indicate a location in the filesystem tree and to perform opera-
     tions that act purely at the file descriptor  level.   The  file
     itself  is not opened, and other file operations (e.g., read(2),
     write(2), fchmod(2), fchown(2), fgetxattr(2), mmap(2)) fail with
     the error EBADF.

    The  following operations can be performed on the resulting file
     descriptor:

    *  close(2); fchdir(2) (since Linux 3.5); fstat(2) (since  Linux
        3.6).

    *  Duplicating  the  file  descriptor (dup(2), fcntl(2) F_DUPFD,
        etc.).

Linux
  1. Möglichkeit, eine Datei direkt zu ändern?

  2. Portabilität von Dateideskriptor-Links?

  3. Echo To File Descriptor überschreibt die Datei?

  4. Cloud-Backup vs. lokales Backup:Die sicherste Art, Daten zu speichern

  5. am schnellsten konvertieren tabulatorgetrennte datei in csv in linux

Installieren von Kali Linux auf VirtualBox:Der schnellste und sicherste Weg

Wie funktionieren Linux-Dateideskriptorbeschränkungen?

Ich möchte sowohl auf einen Dateideskriptor als auch auf einen Mutex warten. Was ist der empfohlene Weg, dies zu tun?

Öffnen Sie einen Dateideskriptor mit einem anderen Zugriff erneut?

Gibt es eine Möglichkeit, ein unterbrochenes scp einer Datei fortzusetzen?

Wie erzwinge ich einen sauberen Neustart von Firefox?