私はbashスクリプトを持っています(x11docker)一部のコマンドはroot(docker
)として実行し、一部のコマンドは権限のないユーザー(XサーバーなどXephyr
)で実行する必要があります。スクリプトは時々パスワードの入力を求められます。まず、システムを構成せずにすべてのLinuxシステムで実行する必要があります。
一部のシステムではこれを使用しsu
、一部のシステムではこれを使用してsudo
root権限を取得します。どちらが有効なのか、どうすれば確認できますか?私は努力したsudo -l docker
。それが許可されているかどうかを教えてくれますsudo docker
。残念ながら、この情報にもパスワードが必要です。
要点は、ルートにパスワードがあってもなくても(使用するにはパスワードが必要ですsu -c
)、sudo
dockerの実行が許可または許可されていないことです。どちらがアクションを実行するかを決定する方法(= root権限でコマンドを実行)
/etc/sudoers
グループsudoをチェックするのは良い推測かもしれませんが、グループsudoランダムルートアクセスを許可するように設定されていることを知らないので、信頼できません。また、ユーザーがsudoグループのメンバーではない場合でもdocker
アクセスを許可できます。/etc/sudoers
pkexec
解決策でなければなりませんが、信頼できません。パスワードプロンプトはコンソールで失敗し、他のXサーバーでも失敗しDISPLAY=:0
、OpenSuseでもまったく失敗します。
現在、このスクリプトはデフォルトで使用されており、使用を許可するsu
スイッチがあります。可能ですが、きれいではありません。--sudo
sudo
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