find
é um executável, não uma função awk
. S, se você quiser chamar um executável dentro do awk, você deve fazer isso com a função system()
.
cmd | awk '{system("find " $6 " -xdev -type f -perm -4000 -print")}'
Estou tentando montar um comando para localizar os Executáveis do Sistema SUID, que não são os padrão no RHEL.
Para fazer isso, estou puxando uma lista do sistema de arquivos local (df --local -P), colocando-o no grep para remover o cabeçalho (grep -v ^ Filesystem) e, em seguida, tentando usar o awk para pegar a 6ª coluna, e executar uma pesquisa baseada nessa pasta para ver se há algum executável do sistema SUID (awk '{find $ 6-xdev-type f -perm -4000 -print}).
O problema em que estou me deparando é que recebo um erro de sintaxe quando tenho -print no comando find, mas não obtenho nenhuma saída quando o deixo de fora. Não tenho certeza se realmente entendi o que está acontecendo e, portanto, como corrigir a falha. É aqui que preciso de ajuda :-).
Quando terminar, meu próximo passo é pegar um array pré-definido de executáveis que eu conheço por padrão, para que o SUID seja definido, e removê-los da saída.
df --local -P | grep -v ^Filesystem | awk '{ find $6 -xdev -type f -perm -4000 -print }'
awk: { find $6 -xdev -type f -perm -4000 -print }
awk: ^ syntax error