GNU/Linux >> Linux Esercitazione >  >> Linux

Perché i file non possono essere manipolati da inode?

Motivi di sicurezza:per accedere a un file è necessaria l'autorizzazione sul file NONCHÉ l'autorizzazione per cercare in tutte le directory dalla radice necessaria per accedere al file. Se potessi accedere a un file tramite inode, potresti ignorare i controlli sulle directory che lo contengono.

Ciò consente di creare un file a cui può accedere un insieme di utenti (o un insieme di gruppi) e non chiunque altro:creare directory accessibili solo agli utenti (una directory per utente) e quindi hard- collega il file a tutte quelle directory:il file stesso è accessibile a chiunque, ma in realtà è accessibile solo a qualcuno che ha i permessi di ricerca su una delle directory a cui è collegato.


Alcuni sistemi operativi lo fanno avere quella struttura. Ad esempio, OS X ne ha bisogno per supportare Carbon File Manager e su Linux puoi usare debugfs . Naturalmente, puoi farlo su qualsiasi UNIX dalla riga di comando tramite find -inum , ma il vero motivo per cui non puoi accedere ai file tramite inode è che non è particolarmente utile. in un certo senso aggira i permessi dei file, perché se c'è un file che puoi leggere in una cartella che non puoi leggere o eseguire, l'apertura dell'inode ti permette di scoprirlo.

Il motivo per cui non è molto utile è che devi trovare un numero di inode tramite un *stat() call, a quel punto hai già ha il nome del file (o un fd aperto)... oppure devi indovinare l'inum.


In risposta al tuo commento:per "passare un file", puoi usare fd che passa sui socket AF_LOCAL tramite SCM_RIGHTS (vedi man 7 unix ).


Linux
  1. Trova file e directory su Linux con il comando find

  2. Perché Rm può rimuovere i file di sola lettura?

  3. Confronta le directory ma non il contenuto dei file?

  4. Perché setuid viene ignorato nelle directory?

  5. Come posso modificare più file in VIM?

Comando Ls in Linux (Elenca file e directory)

Come copiare file e directory in Linux

Come spostare file e directory in Linux (comando mv)

Come eseguire il tar (comprimere) i file, escludendo determinati file o directory

Come copiare file e directory nel terminale Linux

Comando Stat:Visualizza gli attributi di file e directory