I am astounded at your inability to understand this. # su -c 'write root' | cat
will fail because write is running as bin and checks who owns standard output for a match or not. Now this is a pretty perverse example. There's a breaking change in systemd's cron where the standard output spooler is now owned by root rather than the runas user. write is checking for this and falling down. Yes, pipes have owners. If you know what fstat() does you know this.