Questo trucco di clonazione in Linux ti farà risparmiare mal di testa sui permessi

Di Redazione FinanzaNews24 9 minuti di lettura
Linux

I permessi dei file Linux controllano chi può fare cosa con file e directory. Ma se si rovinano, ripristinarli può essere un incubo. Clonare i permessi di un file funzionante è la soluzione più veloce.

Il disordine e lo stress derivanti da permessi errati

Su Linux, i file e le directory hanno una serie di autorizzazioni. Controllano quali azioni possono essere eseguite e da chi.

Le autorizzazioni consentono o negano a qualcuno di leggere da un file, scrivervi o eseguirlo. Per un file, eseguire significa eseguire uno script o un’applicazione. Per una directory, eseguire significa passare a quella directory con il comando cd.

Le autorizzazioni influiscono direttamente sul corretto funzionamento e sulla sicurezza del tuo computer. Autorizzazioni impostate in modo errato possono causare danni, mettendo di fatto i tuoi dati fuori dalla tua portata.

Anche i file hanno proprietari. I nuovi utenti, una volta creati, vengono aggiunti a un gruppo con lo stesso nome del nome di accesso dell’utente. Per impostazione predefinita, un utente possiede tutti i file da lui creati e il gruppo del file è impostato sul gruppo dell’utente. Un file o una directory ha tre serie di autorizzazioni. Uno per il proprietario, un altro per i membri del gruppo del file e un terzo per tutti coloro che non rientrano nelle prime due categorie.

La decompressione di vecchi file di archivio o il ripristino di informazioni da backup effettuati su computer diversi può lasciarti con i file, ma con autorizzazioni tristemente imprecise. Puoi trovarti in una situazione simile se commetti errori con il file chown E chmod comandi. Il comando chmod imposta i permessi dei file e il comando chown imposta la proprietà del file.

Correggere manualmente questi tipi di condizioni di errore è noioso. La risposta è usare chown e chmod per clonare le impostazioni di un file configurato correttamente.

Il problema?

Avevo bisogno di alcuni file da un file di archivio che mi era stato inviato. IO decompresso l’archivioma la directory estratta aveva il simbolo di un lucchetto sull’icona.

Ho dovuto fornire la password di root per accedere alla directory. Fare doppio clic da solo non era sufficiente.

Il controllo con ls (di nuovo, usando sudo) rivela il problema.

sudo ls -hld project L’utente root possiede la directory e nessuno ha permessi di lettura o scrittura.

Anche i file e le sottodirectory sono di proprietà di root e i permessi sono un miscuglio di diverse impostazioni errate.

sudo ls -hl project

Risolviamo prima i problemi di proprietà.

Clonazione della proprietà con chown

Voglio impostare su di me la proprietà del file. Il mio nome utente è Dave. Utilizzeremo il comando chown e copieremo le impostazioni di proprietà da una directory impostata correttamente.

sudo chown -R –reference=/home/dave/Downloads project IL –riferimento

L’opzione indica a chown da quale directory copiare le impostazioni dei permessi. IL -R L’opzione (ricorsiva) dice a chown di impostare i nuovi permessi sulla directory di destinazione e su tutti i file e le sottodirectory.

Possiamo verificare con ls che l’utente dave è ora il proprietario dei file e delle directory. Dobbiamo ancora usare sudo perché non abbiamo ancora risolto i permessi.

sudo ls -hl project

Ora che abbiamo recuperato la proprietà dei file e delle directory, possiamo correggere le autorizzazioni.

Permessi di clonazione con chmod

Questo è un processo molto simile a quello che abbiamo usato con chown, ma dobbiamo stare un po’ più attenti con le autorizzazioni.

Impostare la proprietà è semplice. Tutti i file e le directory appartengono allo stesso utente, quindi ricevono tutti le stesse impostazioni. Ma le directory e i file eseguibili devono avere l’autorizzazione x (esecuzione) impostata per loro. I file normali non necessitano dell’impostazione di tali autorizzazioni. Quindi dobbiamo creare diversi set di permessi e applicarli ai file appropriati. Possiamo farlo in tre passaggi.

Utilizzeremo prima un file normale come file di riferimento. Ciò imposterà le autorizzazioni come se tutto fosse un file normale. Quindi utilizzeremo un riferimento eseguibile file per impostare le autorizzazioni per qualsiasi script di shell. Infine, utilizzeremo chmod nel modo tradizionale per impostare i permessi di esecuzione per le directory.

Il nostro primo passo è utilizzare il file normale come file di riferimento:

sudo chmod -R –reference=/home/dave/Downloads/existing.dat project Possiamo usare ls per vedere quale effetto ha avuto.

sudo ls -hld project

sudo ls -hl project

Le autorizzazioni del file di riferimento (lettura e scrittura per il proprietario e il gruppo e sola lettura per gli altri) sono state replicate su tutti i file e le directory.

Dobbiamo ripristinare il permesso di esecuzione su qualsiasi script. Abbiamo uno script di riferimento da cui possiamo ottenere le autorizzazioni.

sudo chmod -R –reference=/home/dave/Downloads/existing.sh project/*.sh Utilizziamo il carattere jolly “*” perché gestirà qualsiasi file di script nell’intero albero delle directory, indipendentemente dal suo nome.

Possiamo vedere che il permesso di esecuzione è stato impostato sul file “appveyor.sh”.

sudo ls -hl project Ripristinare il permesso di esecuzione sulle directory implica un trucco accurato. Non possiamo utilizzare un carattere jolly perché è probabile che corrisponda anche ai file. Quindi quello che facciamo è usare il file maiuscolo Flag di autorizzazione X. Ciò significa “imposta il bit eseguibile solo se la destinazione è un file con il bit eseguibile Già set o è una directory.”

Possiamo usarlo perché i nostri script eseguibili hanno già il bit eseguibile impostato e lo manterranno. Anche tutte le directory nell’albero delle directory avranno il bit eseguibile impostato.

sudo chmod -R +X project Ora le cose sono tornate a uno stato funzionante con la proprietà corretta, le autorizzazioni corrette e le directory che ti consentono di accedervi tramite cd.

ls -hl project

Clonare tutto con setfacl

Se stai usando Elenchi di controllo degli accessi (ACL), è comunque possibile clonare le impostazioni da un file impostato correttamente su altri file. Gli ACL ti offrono un controllo granulare, permettendoti di fare cose come specificare le autorizzazioni per utente, con utenti diversi che hanno autorizzazioni diverse.

Per clonare le impostazioni, dobbiamo reindirizzare le impostazioni dal nostro file correttamente configurato al comando per impostare le autorizzazioni.

Possiamo vedere le impostazioni ACL sul file esistente utilizzando il comando getfacl.

getfacl existing.file Il proprietario, Dave, ha le autorizzazioni di lettura, scrittura ed esecuzione. L’utente Mary dispone dei permessi di lettura e scrittura. Per clonare queste impostazioni nei file nella directory del progetto, utilizziamo il comando setfacl. Inseriamo l’output del comando getfacl per assicurarci di ottenere le impostazioni ACL desiderate. I file a cui vogliamo applicare le impostazioni ACL si trovano in una directory chiamata “source”.

getfacl /home/dave/Downloads/existing.file | setfacl –set-file=- source IL –set-file

L’opzione di solito prende il nome di un file di cui vuoi copiare le impostazioni da. Utilizzando un singolo trattino “-” come nome file indica a setfacl di utilizzare stdin come origine dati. Questi saranno i nostri dati trasmessi.

L’esame di uno qualsiasi dei file nella directory di origine verifica che le impostazioni ACL copiate siano state applicate.

getfacl terminal.c

Fuori dal caos, ordine

Vedere il caos in cui a volte ti trovi dopo aver scaricato, ripristinato o estratto i file può farti sprofondare il cuore. Ma è abbastanza semplice mettere ordine nel caos con pochi comandi, usati nel giusto ordine.

TAGGATO:
Condividi questo articolo
Exit mobile version