GNU/Linux >> Tutoriales Linux >  >> Linux

La forma más segura de forzar el cierre de un descriptor de archivo

abra /dev/null con O_WRONLY, luego dup2 para cerrar el descriptor del archivo ofensivo y reutilice su descriptor para /dev/null. De esta forma, cualquier lectura o escritura en el descriptor del archivo fallará.

Si duplica un descriptor a /dev/null , cualquier escritura no fallará , pero tener éxito , y las lecturas sucederán y devuelve 0 (eof).

Esto puede o no ser lo que quieres.

En Linux, también puede abrir un archivo con flags =3 (O_WRONLY|O_RDWR también conocido como O_NOACCESS ) que hará que cualquier lectura o escritura falle con EBADF .

El archivo solo estará disponible para ioctls, lo que plantea un peligro del que no se habla en la otra respuesta y comentarios:las lecturas y escrituras no son las únicas operaciones realizadas en los descriptores de archivos. (¿Qué pasa con lseek o ftruncate ?).

Actualización:

Encontré algo mejor que el O_WRONLY|O_RDWR indocumentado :O_PATH = 010000000 / 0x200000 . Según la página de manual de open(2):

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. Manera de modificar un archivo en el lugar?

  2. ¿Una forma inteligente de desfragmentar un sistema de archivos gordo?

  3. Echo To File Descriptor sobrescribe el archivo?

  4. ¿Cómo forzar la eliminación de un archivo?

  5. Copia de seguridad en la nube frente a copia de seguridad local:la forma más segura de almacenar datos

Una manera fácil de ocultar archivos y directorios en Linux

Instalar Kali Linux en VirtualBox:la forma más rápida y segura

Quiero esperar tanto en un descriptor de archivo como en un mutex, ¿cuál es la forma recomendada de hacerlo?

¿Reabrir un descriptor de archivo con otro acceso?

¿Hay alguna manera de reanudar un scp interrumpido de un archivo?

¿Cómo forzar el reinicio de firefox de forma limpia?