chmod somente certos tipos mime

2

Estou usando file --mime-type * para encontrar os tipos MIME de todos os arquivos em um diretório selecionado.

Muitos desses arquivos não devem ser executáveis e são .conf ou seu tipo é text/plain . Existe uma combinação do comando find que pode alterar todos os tipos MIME não executáveis de volta para 644 em vez de 755 ?

    
por Chris Bornhoft 19.11.2014 / 23:54

2 respostas

3

Você poderia usar algo assim:

file -F' ' --mime-type * | awk ' ~ /text\/plain/{print }' | xargs chmod 644

Isso altera todas as permissões para 644 se um arquivo tiver o tipo mime text/plain . Apenas substitua a peça no awk body pelo tipo mime que você desejar. Veja /etc/mime.types para todos os disponíveis.

Explicação:

  • O -F' ' flag faz com que o arquivo use um espaço como separador entre o nome do arquivo e o resultado. É mais fácil para a instrução awk posterior
  • A parte awk imprime apenas o nome do arquivo se o segundo campo ( ) da saída contiver text/plain .
  • xargs chamadas chmod 644 em cada item
por chaos 20.11.2014 / 00:41
1

Abaixo, o comando file --mime-type usado em um script python. Ele altera as permissões dos tipos de arquivo que você define para 'new_permissions', em um determinado diretório (recursivamente).

#!/usr/bin/env python3

import subprocess
import os

directory = '/path/to/files'
m_subject = ('text/plain', 'another_mimetype')
new_permissions = '644'

for root, dirs, files in os.walk(directory):
    for file in files:
        check_mtype = 'file --mime-type '+'"'+root+'/'+file+'"'
        mtype = subprocess.check_output(
            ['/bin/bash', '-c', check_mtype]).decode('utf-8').strip().split(' ')[-1]
        if mtype in m_subject:
            set_permissions = 'chmod '+str(new_permissions)+' '+root+'/'+file
            subprocess.Popen(['/bin/bash', '-c', set_permissions])
            print('permission set to '+new_permissions+' '+root+'/'+file)

Copie o script em um arquivo vazio, na seção head do script, defina o diretório, os tipos MIME para alterar e as novas permissões, salve-o como change_types.py .

Execute-o pelo comando:

python3 /path/to/change_types.py
    
por Jacob Vlijm 20.11.2014 / 01:18