GNU/Linux >> Linux Esercitazione >  >> Linux

Autorizzazioni di accesso di /dev/mem

Cosa produce quanto segue:

cat /dev/mem | wc

Ottengo:

cat: /dev/mem: Operation not permitted
   1908   11791 1048576

Quindi per me si ferma a 1 MB.

Nota che cat usa open, non mmap quindi non è un test identico.

Sei sicuro di leggere oltre 1 MB?


  1. Sì, hai ragione, /dev/mem ti consente di mappare qualsiasi indirizzo fisico, incluso l'IO mappato in memoria non RAM. Questo può essere utile per un hack rapido e sporco per accedere a qualche dispositivo hardware senza scrivere un driver del kernel.

  2. CONFIG_STRICT_DEVMEM fa in modo che il kernel controlli gli indirizzi in /dev/mem con devmem_is_allowed() in arch/x86/mm/init.c , e il commento lì spiega:

    * On x86, access has to be given to the first megabyte of ram because that area
    * contains bios code and data regions used by X and dosemu and similar apps.
    * Access has to be given to non-kernel-ram areas as well, these contain the PCI
    * mmio resources as well as potential bios/acpi data regions.
    

    il tuo indirizzo 0xFFFF0000 è molto probabile che non sia RAM, poiché i BIOS in genere mettono la memoria IO appena sotto i 4 GB, quindi è per questo che puoi mapparla anche con STRICT_DEVMEM.


Linux
  1. Come generare una password casuale in Linux usando /dev/random

  2. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  3. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  4. Cos'è /dev/mem?

  5. DD da /dev/zero a /dev/null... cosa succede realmente

tty (/dev/tty ) vs pts (/dev/pts) in Linux

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

kernel:disabilitare /dev/kmem e /dev/mem

Come Linux usa /dev/tty e /dev/tty0

echo o print /dev/stdin /dev/stdout /dev/stderr

Differenze tra /dev/sda e /dev/sda1