su -cとrunuser -l -cの違い


5

シェルスクリプトで特定のユーザーとしてコマンドラインを実行する必要があります。

私は(少なくとも)二つの方法を見つけました:

su user -c 'command'

runuser -l user -c 'command'

この2つのコマンドに大きな違いはありますか?


あなたはそれらを実行しているときあなたは根っこですか?そうでない場合 runuser あなたが望むことができないかもしれません。 UIDをターゲットユーザーに設定するには、特権を持つユーザーとして実行する必要があります。 su あなたのためにそれを処理します
Eric Renouf

1
@EricRenoufはい、私はrootです。
Getz

から man runuser「コマンドの違い runuser そして それです runuser パスワードは要求されず(rootユーザーのみが実行できるため)、別のPAM設定が使用されます。 "
AFH

1
@AFH rootとして、suもパスワードを要求しません。
Getz

...これは、PAM設定とは別に、rootユーザーとしてはほとんど違いがないことを意味します。
AFH

回答:


5

すでに質問のコメントで書かれているように、runuserは基本的にPAMスタックを使わないsuです。

に従って、もう少し詳しく説明します。 ブログ記事 runuserの作者の一人であるDan Walshの - runmanは実際にはsuソースからコンパイルされているようです。ただし、PAMスタックはコンパイルから除外されます。違いは、suの代わりにrunuserを使用すると、SELinuxエラーを防ぐことができるということです。その記事はまたこう言う:

サービスがrootとして実行されていてUIDを変更したいとき   シェルはrunuserを使うべきです。

ユーザーとしてシェルにログインしていて、rootになりたい場合は、   あなたはsuを使うべきです。 (またはもっと良いsudo)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.