GNU/Linux >> Linux Esercitazione >  >> Linux

Permessi e salvataggio dei file?

Supponiamo che tu apra un file su cui hai il permesso di scrittura.
Nel frattempo modifichi i permessi e rimuovi il permesso di scrittura mentre hai ancora il file aperto in qualche editor.

Cosa succede se lo modifichi e lo salvi?

Risposta accettata:

Le autorizzazioni di un file vengono verificate all'apertura del file. La modifica delle autorizzazioni non influisce su ciò che possono fare i processi che hanno già il file aperto. Questo viene utilizzato a volte con processi che iniziano con privilegi aggiuntivi, aprono un file, quindi rilasciano quei privilegi aggiuntivi:possono comunque accedere al file ma potrebbero non essere in grado di riaprirlo.

Tuttavia, gli editor in genere non tengono un file aperto. Quando un editor apre un documento, ciò che accade di nascosto è che l'editor carica il contenuto del file in memoria e chiude il file. Quando salvi il documento, l'editor apre il file e scrive il nuovo contenuto.

Gli editor possono seguire una delle due strategie durante il salvataggio di un file. Possono creare un nuovo file, quindi spostarlo in posizione. In alternativa, possono aprire il file esistente e sovrascrivere il vecchio contenuto. La sovrascrittura ha il vantaggio che l'autorizzazione e la proprietà del file non cambiano e che funziona anche in una directory di sola lettura. Il principale svantaggio della sovrascrittura è che se il salvataggio non riesce a metà (arresto anomalo dell'editor, arresto anomalo del sistema, disco pieno, ...), si rimane con un documento troncato. Editori diversi scelgono strategie diverse; quello buono, se possibile, scrivi su-new-then-move e sovrascrive solo in una directory di sola lettura (dopo aver eseguito un backup da qualche altra parte).

Se l'editor segue la strategia new-then-move, le autorizzazioni sul file non contano:l'editor creerà un nuovo file e per questo ha solo bisogno dell'autorizzazione di scrittura sulla directory. Ci sono due eccezioni:se la directory ha lo sticky bit, la modifica della proprietà del file (ma non dell'autorizzazione) potrebbe rendere impossibile per il processo spostare il nuovo file in posizione. Un'altra eccezione riguarda i sistemi che supportano l'autorizzazione all'eliminazione tramite ACL (come OSX):la revoca dell'autorizzazione all'eliminazione dal file potrebbe rendere impossibile lo spostamento.

Se l'editor segue la strategia di sovrascrittura, la revoca dell'autorizzazione di scrittura renderà impossibile il salvataggio. (Tuttavia, alcuni editor che sovrascrivono per impostazione predefinita potrebbero ricadere su new-then-move.)

Correlati:come modificare il nome di un file contenente caratteri?

In Vim, puoi forzare la strategia di sovrascrittura disattivando backupcopy opzione; vedi anche perché il valore dell'inode cambia quando modifichiamo nell'editor "vi"?. In Emacs, puoi forzare la strategia di sovrascrittura impostando il backup-by-copying variabile in t .


Linux
  1. Come modificare autorizzazioni e proprietari tramite riga di comando

  2. Nozioni di base sui permessi dei file Linux

  3. Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

  4. Comprensione delle autorizzazioni UNIX e dei tipi di file

  5. Monta con sshfs e scrivi i permessi dei file

Comando Chmod in Linux (autorizzazioni file)

Come salvare un file in Vi / Vim e uscire dall'editor

Editor VIM

Permessi e proprietà dei file Linux spiegati con esempi

Gestisci le autorizzazioni di directory e file con chmod Recursive

Comprendere le autorizzazioni di base dei file e la proprietà in Linux