Vielleicht möchten Sie diesen Trick anwenden:
{ anycommand } | su -c 'tee file' user
tee(1)
ist ein POSIX-Dienstprogramm, daher können Sie sich auf seine Verfügbarkeit verlassen.
Oder mit sudo
:
{ anycommand } | sudo -u user 'tee file'
Verwenden Sie eine Subshell:(su -c 'psql -U postgres -c "<command>"' postgres) > file
Innerhalb der Subshell können Sie Berechtigungen löschen, um Ihre Arbeit zu erledigen, aber die Ausgabe wird an Ihre ursprüngliche Shell umgeleitet, die immer noch Ihre ursprünglichen Berechtigungen hat.