Eu acho que você quer dividir a entrada para as partes que têm uma única palavra, dois-pontos e outras palavras. Seria mais fácil se as seções fossem separadas, mas você poderia, por exemplo adicione separadores com algo parecido com isto:
echo "ownername:read write execute groupname:read execute all:none sticky" | \
sed -e 's/\w\w*:/;&/g'
;ownername:read write execute ;groupname:read execute ;all:none sticky
A divisão no ponto-e-vírgula deve ser possível a partir disso.
Fragmento Perl obrigatório, dividindo as partes diretamente em uma matriz:
echo "ownername:read write execute groupname:read execute all:none sticky" | \
perl -ne '@a = split/ (?=\w+:)/; print "$_\n" for @a'
ownername:read write execute
groupname:read execute
all:none sticky