Cosa preserva effettivamente il flag tar's -p (conserva i permessi)?


22

Cosa -pconserva effettivamente la bandiera durante la creazione e l'estrazione di un tarball? Sono le rwxautorizzazioni che conserva?

Quando ho creato un htdocs/tarball di proprietà di root, l'estrazione sul mio computer locale ha cambiato la proprietà da root al mio utente.


5
Forse dovresti provare a estrarre l'archivio come root. Non è possibile impostare le autorizzazioni per un altro utente come utente normale, quindi penso tarche non sarà in grado di farlo. Per favore dimmi se ha funzionato.
Louis Matthijssen,

"macchina locale"? Si prega di chiarire quale sistema operativo ha questa macchina;)
Rinzwind

Dicci anche quali filesystem stai usando. Sia quelli di origine che quelli di destinazione.
terdon,

Fonte: Red Hat Enterprise Linux Server release 6.5 (Santiago) Target: Ubuntu 13.10 entrambi usanoGPT
nicoX

Nota a margine: tarconserva le autorizzazioni. -pe --same-owner/ --no-same-owner(come nelle risposte) sono flag di estrazione. Non hanno alcun effetto durante l'archiviazione
Fr0zenFyr

Risposte:


19

La proprietà e le autorizzazioni sono due cose diverse. Il -pflag conserva le autorizzazioni . Sui sistemi * nix, gli utenti normali non possono cambiare la proprietà dei file con un utente che non è loro stesso.

Come spiegato qui :

Solo i processi con un ID utente effettivo uguale all'ID utente del file o con privilegi appropriati possono modificare la proprietà di un file. Se _POSIX_CHOWN_RESTRICTED è attivo per il percorso:

  • La modifica dell'ID utente è limitata ai processi con privilegi appropriati.

  • La modifica dell'ID gruppo è consentita in un processo con un ID utente effettivo uguale all'ID utente del file, ma senza i privilegi appropriati, se e solo se il proprietario è uguale all'ID utente del file o (uid_t) -1 e il gruppo è uguale o all'ID gruppo effettivo del processo chiamante o a uno dei suoi ID gruppo supplementari.

La logica alla base è stata ben spiegata da @Gilles in questa risposta Unix e Linux:

Il motivo di questa restrizione è che la distribuzione di un file a un altro utente può consentire che accadano cose brutte in situazioni non comuni, ma comunque importanti. Per esempio:

  • Se un sistema ha le quote disco abilitate, Alice potrebbe creare un file scrivibile in tutto il mondo in una directory accessibile solo da lei (quindi nessun altro potrebbe accedere a quella directory scrivibile in tutto il mondo), quindi eseguire chown per rendere quel file di proprietà di un altro utente Bill . Il file verrà quindi conteggiato nella quota del disco di Bill anche se solo Alice può utilizzare il file.
  • Se Alice regala un file a Bill, non c'è traccia che Bill non abbia creato quel file. Questo può essere un problema se il file contiene dati illegali o comunque compromettenti.
  • Alcuni programmi richiedono che il loro file di input appartenga a un determinato utente per autenticare una richiesta (ad esempio, il file contiene alcune istruzioni che il programma eseguirà per conto di tale utente). Questo di solito non è un progetto sicuro, perché anche se Bill ha creato un file contenente istruzioni sintatticamente corrette, potrebbe non aver intenzione di eseguirle in questo particolare momento. Tuttavia, consentire ad Alice di creare un file con contenuto arbitrario e averlo preso come input da Bill può solo peggiorare le cose.

Quindi, anche se usi il --same-ownerflag di tar , dovrai comunque estrarre i file rootper preservare la proprietà. Quel flag è attivo per impostazione predefinita per root, quindi quello che vuoi è:

sudo tar xpf foo.tgz

9

Ci sono altre 2 opzioni per tar interessanti:

--same-owner
       try extracting files with the same ownership as exists in the ar‐
       chive (default for superuser)

--no-same-owner
       extract files as yourself (**default for ordinary users**)

Il secondo è quello predefinito, quindi puoi aggiungerlo --same-ownerper salvare il tuo utente. Probabilmente dovrai farlo con sudo.

Oltre a ciò: questo funzionerà -solo- su sistemi che supportano POSIX. E i sistemi operativi diversi da Ubuntu potrebbero non avere queste 2 opzioni (non sono standard).


3
Il --same-ownernon funziona per gli utenti non-root, non avrà il diritto di impostare la proprietà a nessuno, ma se stessi. Questo è definito da POSIX .
terdon,

4

Per preservare l'esecuzione del proprietario come root o utilizzare il flag --same-owner accanto al flag -p durante l'estrazione.


3
Deve essere eseguito come root in ogni caso. Gli utenti non root non possono cambiare la proprietà dei file con altri utenti.
terdon,
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.