どんな種類の認証も要求せずに、実行するユーザーに関係なく、Debianでrootとして実行されるbashスクリプトを(可能であれば)作成する方法を知りたいです。
このファイルは、rootユーザーであるため、すべてのコマンドを実行しますが、実際のrootユーザーのみがファイルの読み取りまたは書き込みを行うことができます。
swapoff
のようなコマンドを実行したいので、これが必要です 、swapon
、apt
、など…しかし、別のアプリケーションを介して、パスワードを要求されないようにしたい。
コマンドは修正されるため(これらのルートコマンドは、入力としてではなく、ファイル内にパラメーターを持ちます)、セキュリティへの影響は私の関心事ではありませんが、説明も受け入れます。
承認された回答:
プログラムを常に特定の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
の場合、ほとんどの環境変数を除外します オプションが設定されています。