Come faccio a cambiare il proprietario per l'utente corrente nella cartella e contenente le cartelle nella mia home directory?


12

Usando sudo nautilusho creato alcune cartelle e voglio sbarazzarmi delle autorizzazioni di root su di esse. Ma ne ho molti e voglio farlo in un'intera directory e nelle sue cartelle contenenti.

Quindi, come consentire la lettura / scrittura all'utente corrente a tutti i file e le cartelle all'interno di una directory specifica che si trova all'interno di home?

Risposte:


14

Per ripristinare i danni causati dall'uso sudo nautilus, dovresti diventare il proprietario di tutte le directory (e il loro contenuto) di proprietà di root.

Puoi usarlo findper fare questo, poiché ha un test per trovare solo i file di proprietà di un utente specifico.

Questo troverà tutte le directory nella tua casa di proprietà di root:

sudo find ~ -type d -user root

È quindi possibile ripetere il findcomando e aggiungere l'azione che si desidera eseguire, cambiando ricorsivamente la proprietà di tutte le directory trovate e dei loro contenuti per l'utente corrente:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

Spiegazione:

  • ~ la home directory
  • -type d trova solo le directory
  • -user root trova solo cose appartenenti a root
  • -exec fai il seguente comando su qualunque cosa sia stata trovata
  • sudo chown -R cambiare ricorsivamente il proprietario
  • $USER l'utente corrente
  • : cambia anche il gruppo per l'utente specifico

Più efficacemente, potresti omettere -type ddi trovare file di qualsiasi tipo appartenenti a root, e omettere anche il -Rcome findfarà la ricorsione per te agendo su tutti i file

sudo find ~ -user root -exec sudo chown $USER: {} +

Devi eseguire il tuo findwith sudo( sudo find ...) per ispezionare le rootsottodirectory di proprietà con 0700protezioni e tutto sotto di esse. Idem per la riparazione.
Waltinator,

"difenditi da ciò che è probabile" o "difenditi da ciò che è possibile"? La tua scelta.
Waltinator,

@waltinator sicuro :) grazie per averlo menzionato in modo da poter migliorare. Cerco solo di non usare sudofino a quando necessario
Zanna,

10

Esecuzione di strumenti grafici, come nautiluscome rootè considerato nocivo per questo motivo, tra gli altri (funzioni nascoste, capacità di frammenti di programma eseguito in silenzio da chissà dove, ...).

Non hai un problema di "autorizzazione", hai un problema di "proprietà".

Per trovare tutti i file di proprietà root(realmente di proprietà di chiunque altro), fai:

sudo find $HOME \! -user $USER

Per cambiarti la proprietà, potresti farlo

sudo chown -R $(id -u):$(id -g) $HOME

ma ciò cambierà la proprietà di tutti i file dentro e sotto $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

Ti dà la possibilità di modificare l'elenco dei file, di proprietà di non te, che avranno la proprietà cambiata di nuovo a te.


5

Quello che devi fare è cambiare la proprietà della cartella dalla radice dell'utente (e del gruppo) all'altro utente (e gruppo) che desideri.

Immagina di voler lavorare su / home / randomFolder e che l'utente a cui vuoi gestire la proprietà è vitor-abella , quello che devi fare è semplicemente eseguirlo come root:

chown -R vitor-abella:vitor-abella /home/randomFolder

Potrebbe volerci un po 'di tempo se ci sono molti file e sottocartelle, ma dopo dovresti essere sulla buona strada.

Saluti.


3
Io uso $(id -u):$(id -g), piuttosto che chiedere a OP di immaginare, e $HOME/randomFolder.
Waltinator,
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.