GNU/Linux >> Linux の 問題 >  >> Linux

シェルスクリプトを常にルートとして実行する方法は?

どんな種類の認証も要求せずに、実行するユーザーに関係なく、Debianでrootとして実行されるbashスクリプトを(可能であれば)作成する方法を知りたいです。

このファイルは、rootユーザーであるため、すべてのコマンドを実行しますが、実際のrootユーザーのみがファイルの読み取りまたは書き込みを行うことができます。

swapoffのようなコマンドを実行したいので、これが必要です 、swaponapt 、など…しかし、別のアプリケーションを介して、パスワードを要求されないようにしたい。

コマンドは修正されるため(これらのルートコマンドは、入力としてではなく、ファイル内にパラメーターを持ちます)、セキュリティへの影響は私の関心事ではありませんが、説明も受け入れます。

承認された回答:

プログラムを常に特定のUIDで実行するための低レベルの方法は、バイナリファイルのsetuidビットです。そのように例: sudo およびsu 通常の使用で開始された場合でも、root権限を取得します。
ただし、一般的に、Unixライクなシステムはsetuidスクリプトをサポートしていません。 、参照:シェルスクリプトでsetuidを許可する

ただし、できることは、sudoを構成することです。 または、ユーザーが適切な権限で特定のファイルを実行できるようにするその他のツール。たとえば、これによりviceadminが許可されます /usr/local/bin/sudoswaponを実行するには 引数あり、認証なし:

viceadmin ALL = NOPASSWD:/usr/local/bin/sudoswapon

さて、sudo 特権自体の変更を扱います、sudoswapon シェルスクリプトにすることができます。

スクリプトはコマンドライン引数の処理方法に注意する必要があり、すべて シェル言語の落とし穴が適用されます。幸い、sudo 少なくともenv_resetの場合、ほとんどの環境変数を除外します オプションが設定されています。


Linux
  1. シェルスクリプトの「sudoSu」がスクリプトの残りの部分をルートとして実行しないのはなぜですか?

  2. シェルスクリプトはどこから実行されますか?

  3. シェルからPythonスクリプトを実行する方法

  1. * nixでログイン時にスクリプトを実行するにはどうすればよいですか?

  2. プログラムでAndroidでシェルコマンドを実行する方法はありますか?

  3. シェルスクリプトの並列実行

  1. 起動時にシェルスクリプトを実行する方法

  2. Pythonスクリプトをサービスとして実行するには?

  3. rootユーザーとしてjenkinsでシェルコマンドを実行しますか?