この質問は bashスクリプトでSudoを無視する と重複していません
Ubuntu 14.04のドッカーイメージに基づいてドッカーイメージを作成しています。ご存じのように、rootはdockerのデフォルトユーザーです。 bashスクリプトを実行してソフトウェアをインストールすると、
Sudo: error in /etc/Sudo.conf, line 0 while loading plugin `sudoers_policy'
Sudo: /usr/lib/Sudo/sudoers.so must be owned by uid 0
Sudo: fatal error, unable to load plugins
私が試してみました chown root /usr/lib/Sudo/sudoers.so
、しかしそれは機能していません。
この動作は奇妙です:
ls (everyone can do this)
Sudo ls (you can't do this even if you are root)
私はdockerイメージを構築しているため、Sudoをサポートルートにするために無相関のパッケージをインストールしたくありません。しかし、いくつかのbashスクリプトにはSudo
がたくさんあるため、単にSudo
を空に置き換えるのは良い選択ではないかもしれません。
だから私はあなたがrootであるときにSudo
のみを無視する方法があるかどうか疑問に思っています
スクリプトの最初に向かって、必要に応じてSudo
を実際のSudo
を呼び出す関数として定義します。
Sudo ()
{
[[ $EUID = 0 ]] || set -- command Sudo "$@"
"$@"
}
command Sudo foo bar
は、関数またはエイリアスの代わりに実際のSudo
コマンドを使用するようにbashに指示します。 $EUID
は有効なユーザーIDであり、$UID
とは異なる場合があります。