sudoが許可されないのはなぜですか?

sudoが許可されないのはなぜですか?

sudoを使用せずにshスクリプトで "brctl addbr br-lan"コマンドを使用してブリッジを作成する必要があります。

私はこのようなスクリプトを持っています。

brctl addbr br-lan
ifconfig lo up

私のスクリプトの機能を設定しようとしています。

sudo ./setcap cap_net_raw,cap_net_admin,cap_dac_override+eip 
./myscript.sh

しかし、それは何も変えません。

"./myscript.sh"を呼び出すと、次の出力が返されます。

add bridge failed: Operation not permitted
SIOCSIFFLAGS: Operation not permitted

root権限なしでスクリプトを実行するにはどうすればよいですか?または、スクリプトに対してどのような機能を定義する必要がありますか?

テキサス。

答え1

関数が必要なのはスクリプトではなくインタプリタなので、スクリプトに関数を割り当てることはできません。それでも問題が解決しない場合は、sudoroot権限でスクリプトを実行する別の方法を見つける必要があります。

一部のコンテキスト(実行できない理由sudoやスクリプトがルートアカウントで自然に実行されない理由など)を含むように質問を更新すると、ここにいる誰かが追加の提案をいくつか提供することがあります。

答え2

  • sudoには細分化された権限があることをご存知でしたか?たとえば、ユーザーにパスワードの有無にかかわらず 1 つの操作を実行する権限を付与できます。これはすべてではないか何もありません

  • golangやその他の高度なコンパイル言語で書くことを検討してください。それは能力を可能にする。

  • このコンテナを管理するには、docker一部の権限を使用して付与することをお勧めします。sudoコンテナ/画像の名前を変更すると権限の昇格が許可される可能性があるため、この名前を持つすべてのコンテナ/画像が同じではないため、許可する項目に注意してください。

関連情報