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

Como possuir/chmod todos os ficheiros do directório actual?

Estou a tentar mudar a propriedade e as permissões de alguns ficheiros (e directórios) do directório actual. Tentei isto:

chown username:groupname .

…esperando que afectasse todos os ficheiros do directório actual, mas em vez disso apenas afectasse o directório em que estou (que é o oposto do que eu quero fazer). Quero alterá-lo em todos os ficheiros sem afectar o directório actual em que me encontro.

Como é que eu posso ter e chmod todos os ficheiros do directório actual?

Respostas (3)

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

Você quer usar o chown username:groupname *, e deixar a shell expandir o * para o conteúdo do directório actual. Isto irá alterar as permissões de todos os ficheiros/pastas do directório actual, mas não o conteúdo das pastas.

Também pode fazer o chown -R username:groupname ., que irá alterar as permissões do directório actual, e depois voltar a descer dentro dele e de todas as subpastas para alterar as permissões.

chown -R username:groupname * irá alterar as permissões de todos os ficheiros e pastas recursivamente, deixando o directório actual em si. Este estilo e o primeiro estilo são os que eu me encontro usando com mais frequência.

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

Penso que pretende isto:

chown username:groupname *

Se também pretende mudar de subdirectórios de forma recorrente, necessitará da mudança de -R (-r é obsoleto):

chown -R username:groupname *

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

chown é ótimo se você for um superusuário. Eu tinha um problema onde outra pessoa tinha corrido o make no meu directório, e agora possuía alguns ficheiros que eu não podia modificar. Aqui está o meu script que trata de ficheiros e directórios, embora deixe os directórios com sufixos .mkmeowner se não os conseguir apagar.

  • O script seguinte muda a propriedade dos ficheiros e directórios passados para ele para ser propriedade do utilizador actual, tentando contornar questões de permissão fazendo uma nova cópia de cada directório ou ficheiro não propriedade do utilizador actual, apagando (ou tentando delete) o ficheiro original, e renomeando apropriadamente.
  • A intenção é que seja uma abreviatura para “make me owner”. Eu não uso underscores porque são uma dor de escrever.

Exemplos:

% mkmeowner .

% mkmeowner dirpath1 dirpath2
  • Requer o seguinte script mkmeownerone para estar no seu caminho.

mkmeowner:

#!/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

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