Você pode usar find
para fazer isso:
find <dirpath> -perm 700 -type d -exec chmod 755 {} \; ## For directories
find <dirpath> -perm 600 -type f -exec chmod 644 {} \; ## For files
Por causa das configurações de umask padrão em meus sistemas, as permissões de arquivo sempre são padronizadas para nenhum acesso para group e outros. Isso é normal, mas é chato quando estou instalando software que eu preciso que outras pessoas acessem. Existe uma maneira rápida de poder redefinir as permissões de todos os arquivos e pastas em uma árvore após uma instalação com base nas permissões de uso.
Basicamente, copie o usuário, exceto para gravação.
rwx------ to rwxr-xr-x
rw------- to rw-r--r--
Você pode fazer algo como:
find . ! -type l -print0 |
perl -0 -lne '
$m = (lstat$_)[2] & 07777;
$u = ($m >> 6) & 5;
chmod $m | $u | ($u<<3), $_'
Ou seja, pegue as permissões de usuário, remova o bit write ( & 5
) e ou para o grupo e > outras permissões.
Assumindo que você é um usuário unix bem comportado e não tem espaços em branco em nomes de arquivos:
for file in $(find . -type f -o -type d)
do \
user_perm=$(stat -c %a $file |cut -c1)
other_perm=$(($user_perm&5))
chmod $user_perm$other_perm$other_perm $file
done
Tags permissions chmod find