Để chạy tập lệnh của bạn dưới dạng một người dùng khác dưới dạng một lệnh, hãy chạy:
/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres
Breaking it down:
/bin/su : switch user
-c "/path/to..." : command to run
- : option to su, make it a login session (source profile for the user)
postgres : user to become
Tôi khuyên bạn luôn luôn sử dụng các đường dẫn đầy đủ trong các tập lệnh như thế này - bạn không thể luôn đảm bảo rằng bạn sẽ ở đúng thư mục khi bạn su (có thể ai đó đã thay đổi homedir trên bạn, ai biết được). Tôi cũng luôn sử dụng đường dẫn đầy đủ đến su (/ bin / su) vì tôi bị hoang tưởng. Có thể ai đó có thể chỉnh sửa đường dẫn của bạn và khiến bạn sử dụng phiên bản su bị xâm phạm.