chown
é ótimo se você é um superusuário. Eu tive um problema em que outra pessoa havia executado make
no meu diretório e agora possuía alguns arquivos que não consegui modificar. Aqui está minha solução alternativa que lida com arquivos e diretórios, embora deixe os diretórios por aí com sufixo, .mkmeowner
se não puder excluí-los.
- O script a seguir altera a propriedade dos arquivos e diretórios passados a ele para pertencer ao usuário atual, tentando solucionar problemas de permissão, fazendo uma nova cópia de cada diretório ou arquivo não pertencente ao usuário atual, excluindo (ou tentando excluir) o arquivo original e renomear adequadamente.
- A intenção é que seja uma abreviação de "make me owner". Não uso sublinhados porque eles são difíceis de digitar.
Exemplos:
% mkmeowner .
% mkmeowner dirpath1 dirpath2
- Requer que o seguinte script
mkmeownerone
esteja 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
man chown
eman chmod
responda facilmente à sua pergunta.