Perché sudoedit sta scrivendo in una directory temporanea?


10

Ho usato sudoeditper creare un file:

 $ sudoedit /etc/systemd/system/apache2.service

ma quando sono andato a salvare il file, è stato scritto in una directory temporanea (/ var / temp / blahblah). Cosa sta succedendo? Perché non lo sta salvando nella directory di sistema?

Risposte:


22

Il punto sudoeditè consentire agli utenti di modificare file che altrimenti non sarebbero autorizzati, mentre eseguono un editor senza privilegi. A tal fine, sudoeditcopia il file da modificare in un percorso temporaneo, lo rende scrivibile dall'utente richiedente e lo apre nell'editor configurato. Ecco perché l'editor mostra un nome file non correlato in una directory temporanea. Quando l'editor esce, sudoeditverifica se sono state apportate modifiche e copia il file temporaneo modificato nella posizione originale, se necessario.


IIRC alcuni redattori eseguiranno anche controlli di integrità di base per assicurarsi che non siano state apportate modifiche al bricking del computer, ma non sono sicuro di quanto sia comune.
Finanzi la causa di Monica il

1
@NicHartley: è difficile farlo nel caso generale, perché ci sono molti modi diversi per bloccare il tuo computer. Tende ad essere specifico dell'applicazione, ad esempio con visudoper /etc/sudoers.
Kevin,

@Kevin Oh, whoops, penso di essere confuso visudoper sudoedit. Sapevo di visudoaverlo fatto di sicuro. Grazie per averlo chiarito!
Finanzi la causa di Monica il

1

Questo è ben spiegato nel la sudopagina di manuale . La descrizione di -e(che sudoeditè equivalente a) dice:

-e

L' -eopzione (modifica) indica che, anziché eseguire un comando, l'utente desidera modificare uno o più file. Al posto di un comando, la stringa " sudoedit" viene utilizzata quando si consulta la politica di sicurezza. Se l'utente è autorizzato dalla politica, vengono prese le seguenti misure:

  1. Vengono eseguite copie temporanee dei file da modificare con il proprietario impostato sull'utente che effettua il richiamo.
  2. L'editor specificato dal criterio viene eseguito per modificare i file temporanei. Il sudoerscriterio utilizza i SUDO_EDITOR, VISUALe EDITORvariabili d'ambiente (in questo ordine). Se nessuno di SUDO_EDITOR, VISUALo EDITORsono impostati, il primo programma elencato nell'editor sudoers(5)opzione viene utilizzata.
  3. Se sono stati modificati, i file temporanei vengono copiati nella loro posizione originale e le versioni temporanee vengono rimosse.

Se il file specificato non esiste, verrà creato. Si noti che, a differenza della maggior parte dei comandi eseguiti sudo, l'editor viene eseguito con l'ambiente dell'utente invocatore non modificato. Se, per qualche motivo, sudonon è possibile aggiornare un file con la sua versione modificata, l'utente riceverà un avviso e la copia modificata rimarrà in un file temporaneo.

In particolare, nota il terzo passaggio: solo se il file è stato modificato al termine della modifica, l'originale viene modificato. Quindi, se si dispone di un programma che guarda un file, questo può aiutare a evitare (a) le scritture intermedie da raccogliere e (b) le azioni non necessarie se si decide di non apportare modifiche alla fine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.