As tarefas Cron são executadas em um ambiente shell que pode ser diferente do que o seu ambiente shell interativo comum. Por exemplo, a variável PATH pode ter uma lista de diretórios diferentes e pode não ter alguns diretórios dos quais você está acostumado a executar utilitários.
Descobrir onde o utilitário ufw está localizado (usando command -v ufw na linha de comando) e, em seguida,
- use o caminho completo para esse utilitário no script ou
- modifique a variável
PATHdentro do script para incluir o diretório no qual oufwutility (eiptables) pode ser encontrado.
O script, como mostrado na pergunta, não possui uma #! -line adequada. Isso não é um problema se você executar com sh explicitamente, mas você não faz isso na especificação da tarefa cron. Em vez disso, torne o script executável e, em seguida, escreva-o como
#!/bin/sh
PATH="$PATH:/usr/sbin:/sbin"
ufw allow 27017 && iptables -F
Em seguida, chame o script do seu crontab exatamente como você está fazendo atualmente.
Aqui, também adicionei os dois diretórios /usr/sbin e /sbin à variável PATH , apenas para mostrar como alguém pode fazer isso no script.