Você está sudo usando apenas o comando ls , mas não logger . Bash não (e não deveria) saber o que o sudo faz, então apenas canaliza dois comandos. O primeiro é sudo e o segundo é logger . Não importa se você sudo ls , logger não.
Você deve sudo logger , mas não funcionará porque é uma função Bash em vez de um executável a ser executado por sudo .
BEWARE : ls | sudo logger invocará /usr/bin/logger se estiver instalado em seu sistema. Lembre-se: sudo não sabe sobre as funções do Bash.
Sugiro que você adicione o usuário invocando seu script ao grupo do proprietário do arquivo para que você possa escrever nele sem aumentar o privilégio especial.
Além disso, eficiência, você está abrindo e fechando o arquivo de log para cada linha lida. Você pode fazer isso apenas uma vez para todo o processo de registro:
function logger() {
while read data
do
echo "$data"
done
return 0
} >>"$logfile"