シェルスクリプトで特定のユーザーとしていくつかのコマンドラインを実行する必要があります。
私は(少なくとも)2つの方法を見つけました:
su user -c 'command'
runuser -l user -c 'command'
この2つのコマンドの間に大きな違いはありますか?
すでに質問のコメントで書かれているように、runuserは基本的にPAMスタックを使用しないsuです。
もう少し詳しく説明すると、Dan Walshの ブログ投稿 (runuserの作成者の1人)によると、runuserは、コンパイルから除外されたPAMスタックを除いて、実際にはsuソースからコンパイルされているようです。違いは、suの代わりにrunuserを使用すると、一部のSELinuxエラーを防ぐことができることです。その投稿はまたこれを言います:
サービスがrootとして実行されていて、シェルを使用してUIDを変更する場合は常に、runuserを使用する必要があります。
ユーザーとしてシェルにログインしていて、rootになりたい場合は、suを使用する必要があります。 (またはもっと良いのはSudo)