Encontre arquivos com permissões de grupo mais restritivas que permissões de proprietário

2

Este é um problema real relacionado ao trabalho. Os usuários podiam anteriormente "su - userx" e podiam executar um script com permissões user: owner como userx: groupz 760 ou 540, ou modificar um arquivo que fosse userx: groupz 740 ou 640. Agora, esse usuário pode não mais su para userx e deve executar tarefas como membro do groupz. As permissões do grupo precisam ser alteradas, mas os arquivos com problema devem ser encontrados primeiro. Eles podem ser encontrados quando eles falham, ou espero que você possa me ajudar a encontrá-los proativamente. Qualquer arquivo ou diretório cujo proprietário: group seja userx: groupz e cujas permissões de grupo sejam mais restritivas que as permissões do proprietário possa ser um problema e deve ser analisado no contexto da "lógica de negócios". Existe uma maneira de encontrar todos esses arquivos e diretórios? Uma resposta para isso poderia revelar muitos problemas em potencial que, de outra forma, só apareceriam quando uma operação que costumava funcionar agora falha.

    
por Tony V 22.12.2015 / 02:52

3 respostas

1

Se você tem o GNU find disponível, você pode usar algo assim:

find /somedir -user userx -group groupz \( -perm /u+w,g-w -o -perm /u+r,g-r -o -perm /u+x,g- \) -ls
    
por 22.12.2015 / 03:46
1

Procure arquivos que pertençam ao usuário e ao grupo desejados e que, para um dos três direitos de acesso a arquivos, o usuário tenha esse direito, mas não o grupo.

find / -user userx -group groupz \( -perm -u+r ! -perm -g+r -o \
                                    -perm -g+w ! -perm -g+w -o \
                                    -perm -g+x ! -perm -g+x \) -print

Observe que isso pode retornar qualquer tipo de arquivo, incluindo links simbólicos para os quais as permissões e a propriedade não importam em muitas variantes unix. Para excluir links simbólicos, adicione ! -type l .

Se você quiser agir nos arquivos, use -exec .

Se tudo o que você deseja fazer é alinhar as permissões do grupo às permissões do usuário, você pode executar chmod g=u liberalmente.

find / -user userx -group groupz ! -type l -exec chmod g=u {} +
    
por 23.12.2015 / 02:46
0

Aqui está a solução final que testei e funcionou. Para evitar a pesquisa em sistemas de arquivos remotos montados, eu precisava montar e evitar seguir os links simbólicos que eu precisava! -Segue. Eu queria que a saída mostrasse as permissões para que eu pudesse facilmente verificar se elas satisfaziam meus critérios, então usei -ls. Uma surpresa foi que a "ordem dos argumentos" era muito importante. Até que encontrei um pedido que funcionou, o comando retornaria alguns resultados que estavam incorretos.

localizar user-userx -group groupz -mount \ (     (-perm -u = r -a! -perm -g = r) -o \     (-perm -u = w -a! -perm -g = w) -o \     (-perm -u = x -a! -perm -g = x) \ ) -ls! -follow

    
por 24.12.2015 / 02:59