In che modo il flag tar -p (preserva permessi) viene effettivamente preservato?

19

Che cosa effettivamente il flag -p conserva durante la creazione e l'estrazione di un tarball? Sono le autorizzazioni rwx che conserva?

Quando ho creato un tarball htdocs/ di proprietà di root, estraendolo alla mia macchina locale ho cambiato la proprietà da root al mio utente.

    
posta nicoX 09.05.2014 - 13:20

3 risposte

17

Proprietà e permessi sono due cose diverse. Il flag -p conserva le autorizzazioni . Sui sistemi * nix, gli utenti regolari non possono cambiare la proprietà dei file a un utente che non è loro stesso.

Come spiegato qui :

  

Solo i processi con un ID utente efficace uguale all'ID utente del file o con i 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 di gruppo è consentita a un processo con un ID utente effettivo uguale all'ID utente del file, ma senza privilegi appropriati, se e solo se il proprietario è uguale all'ID utente del file o (uid_t) -1 e il gruppo è uguale all'ID del gruppo effettivo del processo chiamante o a uno dei suoi ID gruppo supplementari.

  •   

La logica alla base di questo è stata ben spiegata da @Gilles in questo Unix & amp; Risposta Linux:

  

Il motivo di questa limitazione è che dare via un file a un altro   l'utente può consentire che cose brutte accadano in modo non comune, ma comunque importante   situazioni. Ad esempio:

     
  • Se un sistema ha le quote disco abilitate, Alice potrebbe creare un file scrivibile nel mondo in una directory accessibile solo a lei (quindi non   un altro potrebbe accedere a quella directory scrivibile in tutto il mondo) e quindi eseguire   chown per rendere quel file di proprietà di un altro utente Bill. Il file sarebbe   quindi conta sotto la quota del disco di Bill anche se solo Alice può usare 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 particolare utente per autenticare una richiesta (ad esempio, il   il file contiene alcune istruzioni su cui il programma si esibirà   nome di quell'utente). Questo di solito non è un progetto sicuro, perché   anche se Bill ha creato un file che contiene sintatticamente corretto   istruzioni, potrebbe non aver intenzione di eseguirli a questo   momento particolare. Tuttavia, consentendo ad Alice di creare un file con   contenuto arbitrario e aver preso come input da Bill può solo fare   le cose vanno peggio.
  •   

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

sudo tar xpf foo.tgz
    
risposta data terdon 09.05.2014 - 13:58
7

Ci sono altre 2 opzioni per tar che sono 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 è l'impostazione predefinita, quindi puoi aggiungere --same-owner per salvare l'utente. Probabilmente dovrai farlo con sudo .

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

    
risposta data Rinzwind 09.05.2014 - 13:41
3

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

    
risposta data NGRhodes 09.05.2014 - 13:40

Leggi altre domande sui tag