Definir permissões com base nas permissões do usuário

1

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--
    
por eng3 07.09.2017 / 23:02

3 respostas

3

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 07.09.2017 / 23:07
1

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.

    
por 07.09.2017 / 23:41
0

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
    
por 07.09.2017 / 23:58