2012-08-15 20:46:33 +0000 2012-08-15 20:46:33 +0000
58
58

Come scegliere/modificare tutti i file nella directory corrente?

Sto cercando di modificare la proprietà e i permessi di alcuni file (e directory) nella directory corrente. Ho provato questo:

chown username:groupname .
``` &001 


...aspettandomi che avrebbe influenzato tutti i file nella directory corrente, ma invece ha influenzato solo la directory in cui mi trovo (che è l'opposto di quello che voglio fare). Voglio cambiarlo su tutti i file senza influire sulla directory corrente in cui mi trovo. 


Come posso modificare e chmodare tutti i file nella directory corrente?

Risposte (3)

98
98
98
2012-08-15 20:48:16 +0000

Si vuole usare chown username:groupname *, e lasciare che la shell espanda * al contenuto della directory corrente. Questo modificherà i permessi per tutti i file/cartelle della directory corrente, ma non il contenuto delle cartelle.

Si potrebbe anche fare chown -R username:groupname ., che modificherebbe i permessi sulla directory corrente, e poi ricorresse al suo interno e a tutte le sottocartelle per modificare i permessi.

chown -R username:groupname * modificherà i permessi su tutti i file e le cartelle in modo ricorsivo, lasciando la directory corrente da sola. Questo stile e il primo stile sono quello che mi ritrovo ad usare più spesso.

9
9
9
2012-08-15 20:48:05 +0000

Penso che vogliate questo:

chown username:groupname * -R

Se volete cambiare anche le sottodirectory in modo ricorsivo, avrete bisogno dello switch -r (chown -R username:groupname * è deprecato):

&007

0
0
0
2019-03-15 14:44:38 +0000

chown è fantastico se sei un superutente. Ho avuto un problema in cui qualcun altro aveva eseguito make nella mia directory, e ora possedeva alcuni file che non potevo modificare. Ecco la mia soluzione che gestisce i file e le directory, anche se lascia le directory in giro con il suffisso .mkmeowner se non può cancellarle.

  • Il seguente script cambia la proprietà dei file e delle directory passate ad esso per essere di proprietà dell'utente corrente, cercando di aggirare i problemi di autorizzazione facendo una nuova copia di ogni directory o file non di proprietà dell'utente corrente, cancellando (o cercando di delete) il file originale, e rinominando opportunamente.
  • L'intento è quello di essere un'abbreviazione per “make me owner”. Non uso le sottolineature perché sono un problema da digitare.

Esempi:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
``` ```
#!/bin/bash
["x$1" == "x-h"] || ["x$1" == "x--help"] && cat << END && exit 0
Usage: $0 dirorfile [direorfile2 ...]:
    change ownership of directories or files to current user.
    Current user must have permissions to read those and write to owner directory.
END
mkmeownerone=`which mkmeownerone`
for d in $*; do
    find "$d" -not -user `whoami` -exec $mkmeownerone {} \;
done
  • Richiede il seguente script mkmeownerone per essere nel vostro percorso.

mkmeownerone:

#!/bin/bash
# change ownership of one file or directory
f="$1"
expr match "${f}" '.*\.mkmeowner$' > /dev/null && exit 1 # already tried to do this one
if mv -f "$f" "${f}.mkmeowner"; then
    cp -pr "${f}.mkmeowner" "$f" && rm -rf "${f}.mkmeowner"
    exit 0
fi
exit 1

mkmeownerone:

&001