Modifica la proprietà di tutti i file, da un proprietario a un altro

1

Ho cambiato il nome breve del mio account utente, ma sembra che abbia causato un problema con alcuni file (in particolare i contenuti homebrew), che sono ancora di proprietà del vecchio nome utente. Il mio vecchio nome breve era cannyboy, e il mio nuovo nome è un cannone. Come passare attraverso l'intero disco rigido e modificare la proprietà di tutti cannyboy in cannyman , senza modificare altri attributi dei file?

    
posta wildebeesty 21.02.2013 - 13:48
fonte

2 risposte

3

Come base suggerisco di eseguire la funzione "autorizzazione di riparazione" nell'utility del disco.

Se il problema persiste, puoi eseguire un comando come:

find . -user old_user | while read file; do echo chown new_user  $file; done

nota: questo non fa nulla come ora - dovrai adeguarlo alle tue esigenze e assicurarti che non faccia nulla di male.

update ne ho appreso ancora e ora eseguirò un comando come questo:

find . -user old_user -print0 | xargs -0  sudo echo chown new_user

di nuovo regola il comando prima di eseguirlo!

    
risposta data 21.02.2013 - 13:57
fonte
2

FWIW cambiando il nome breve è considerato "cattivo". Immagino tu possa capire perché ora.

Detto questo, un modo per risolvere questo problema è utilizzare "trova" per individuare tutti i file di proprietà di cannyboy:

find * -user cannyboy

(solo per homebrew potresti limitare questo alla gerarchia di / usr / local / come):

find -f /usr/local/* -user cannyboy

Il prossimo ciclo attraverso i risultati con:

sudo chown cannyboy cannyman *file*

nota che il comando sopra richiederà sudo e se rovini potresti causare ulteriori problemi.

Per eseguire questa operazione in un processo in due fasi, innanzitutto:

find -f /usr/local/* -user cannyboy > files.txt

Quindi esegui un loop su files.txt usando il seguente script (con sudo):

#!/bin/bash

while read file;
do
    chown cannyboy cannyman $file
done

Il vantaggio di questo è che puoi utilizzare un sottoinsieme del tuo file txt per testare tutto prima di impegnarti in un grande cambiamento.

Se sei coraggioso, puoi provare il processo in un'unica fase (questo dovrebbe funzionare, ma potrebbe non esserlo):

#/bin/bash
for result in 'find -f /usr/local/* -user cannyboy'
do
    chown cannyboy cannyman $result
done

(A proposito di Mac OS X 10.8.1 c'era un brutto bug di ricerca che avrebbe omesso alcuni risultati)

    
risposta data 21.02.2013 - 14:54
fonte

Leggi altre domande sui tag