su または sudo - どちらが動作するのか、どうすればわかりますか?

su または sudo - どちらが動作するのか、どうすればわかりますか?

私はbashスクリプトを持っています(x11docker)一部のコマンドはroot(docker)として実行し、一部のコマンドは権限のないユーザー(XサーバーなどXephyr)で実行する必要があります。スクリプトは時々パスワードの入力を求められます。まず、システムを構成せずにすべてのLinuxシステムで実行する必要があります。

一部のシステムではこれを使用しsu、一部のシステムではこれを使用してsudoroot権限を取得します。どちらが有効なのか、どうすれば確認できますか?私は努力したsudo -l docker。それが許可されているかどうかを教えてくれますsudo docker。残念ながら、この情報にもパスワードが必要です。

要点は、ルートにパスワードがあってもなくても(使用するにはパスワードが必要ですsu -c)、sudodockerの実行が許可または許可されていないことです。どちらがアクションを実行するかを決定する方法(= root権限でコマンドを実行)

/etc/sudoersグループsudoをチェックするのは良い推測かもしれませんが、グループsudoランダムルートアクセスを許可するように設定されていることを知らないので、信頼できません。また、ユーザーがsudoグループのメンバーではない場合でもdockerアクセスを許可できます。/etc/sudoers

pkexec解決策でなければなりませんが、信頼できません。パスワードプロンプトはコンソールで失敗し、他のXサーバーでも失敗しDISPLAY=:0、OpenSuseでもまったく失敗します。

現在、このスクリプトはデフォルトで使用されており、使用を許可するsuスイッチがあります。可能ですが、きれいではありません。--sudosudo

logname私はスクリプトをrootとして実行し、およびを使用してSUDO_USER権限のない「本当の」ユーザーを確認できる更新プログラムを作業していますPKEXEC_UID。遊び心もありません。

suまたはを使用する必要があるかどうかを知る方法はありますかsudo

ベストアンサー1

少なくともパスワードがあるかどうrootかをテストできます。この場合は、次のことを試すことができますsudo

if [ foo = "$(echo | su -c "echo foo")" ]; then
  su -c whatever
else
  sudo whatever
fi

おすすめ記事