procura arquivos com usuários inexistentes

-1

Eu fiz um restauro de backup de turno de tempo, mas agora em vários lugares eu encontro usuários ou grupos que não existem. eles se parecem com o Usuário # 1034 grupo # 1010 ou o usuário # 501, e estou assumindo que é por isso que muitas coisas não estão funcionando Como a porta TCP 80, então meu servidor não está mais acessível Como faço para encontrar e corrigir esses erros? fsck. Eu achei encontrar -user 1034 | mais, mas isso leva muita navegação. Talvez uma melhor expressão como eu usei para permissões

find . -user old-user -exec chown new-user:new-group {} \; or sudo find . -type f ! -user 501 -exec chown 0 {} \;

, mas como obtenho uma saída para confirmar?

O que eu realmente gostaria é de uma página sobre como picar esses expresions em um lugar, pois help não dá a todos os operadores e eu tenho que procurar por todas as partes para encontrar as diferentes partes do arquivo para manipulações de arquivos e grep

    
por James N. 21.10.2017 / 18:59

1 resposta

1

Se bem entendi, o seguinte pode funcionar para você

Crie linhas de comando com mais de uma -exec parte de acordo com o exemplo a seguir, a primeira parte para mostrar target-file: e a (s) parte (s) seguinte (s) para executar a ação.

$ sudo find /home/sudodus/Backup/ -user sudodus -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;
[sudo] password for nio: 
/home/sudodus/Backup/:
do-this /home/sudodus/Backup/
do-that /home/sudodus/Backup/
/home/sudodus/Backup/5:
do-this /home/sudodus/Backup/5
do-that /home/sudodus/Backup/5
/home/sudodus/Backup/7:
do-this /home/sudodus/Backup/7
do-that /home/sudodus/Backup/7
/home/sudodus/Backup/6:
do-this /home/sudodus/Backup/6
do-that /home/sudodus/Backup/6
/home/sudodus/Backup/4:
do-this /home/sudodus/Backup/4
do-that /home/sudodus/Backup/4

onde você pode substituir /home/sudodus/Backup/ pelo diretório relevante que você deseja pesquisar; -user com -nouser , -group , -nogroup ; sudodus com o usuário ou grupo relevante; echo do-this e echo do-that com os comandos relevantes. Dessa forma, você pode criar linhas de comando, que farão o que quiser e mostrar quais arquivos serão afetados.

-nouser , -nogroup não tem parâmetro, o comando pode ter esta aparência

sudo find /home -nouser -exec printf "%s:\n" {} \; -exec echo do-this {} \; -exec echo do-that {} \;

É uma boa ideia começar com echo como uma "execução a seco" para mostrar que as coisas corretas provavelmente acontecerão e, depois disso, remover as partes echo dos comandos para executar a (s) ação (ões) .

    
por sudodus 21.10.2017 / 20:45