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

スクリプトを常に root として実行することはできますか?

本当に注意してください:setuid と組み合わせたスクリプトは危険です!

まず、この質問/回答、特にこの回答とセキュリティ警告をご覧ください。

setuid でスクリプトを実行したい場合 設定すると、短い C プログラムをラッパーとして記述し、setuid を設定できます。 コンパイルされたバイナリのビット。

ラッパーの例:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

sudo を使用した別のソリューション (ここで言及):

<オール>
  • root として、スクリプトへの書き込み (および場合によってはその他の) アクセスを禁止します:

    chown root /absolute/path/to/your/script.sh
    chmod 700 /absolute/path/to/your/script.sh
    
  • ルート以外の誰もスクリプトを置き換えられないことを確認してください 、例えば親フォルダーのアクセス権を変更する:

    chown root /absolute/path/to/your/
    chmod 755 /absolute/path/to/your/
    
  • /etc/sudoers の sudo アクセス権を変更します visudo で :

    ALL    ALL = (root) NOPASSWD: /absolute/path/to/your/script.sh
    

    設定の詳細 (特定のユーザーまたはグループへのアクセスの制限など) については、sudoers のマンページを参照してください。

  • その後、すべてのユーザーがパスワードなしで root としてスクリプトを実行できます:

    sudo /absolute/path/to/your/script.sh
    

    これは、上記のラッパー/setuid ソリューションの使用に似ています。


    最も簡単で安全な方法は、ファイルのアクセス許可で SETUID ビットを使用することです。これにより、コマンドのアクセス許可がファイル所有者のアクセス許可に昇格されます。

    スクリプトが編集されないようにするには、write for everyone ビットを設定しないでください。


    Linux
    1. スクリプトは実行可能であるが読み取り可能ではありませんか?

    2. スクリプトをルートとして遡及的に実行する方法は?

    3. 現在のディレクトリでスクリプトを入手できません

    1. Unix でディレクトリを削除できない

    2. Linux でファイルを永続的に読み取り専用にして、root でも編集できないようにするにはどうすればよいですか?

    3. sudo権限で現在のシェルでシェルスクリプトを実行する

    1. ランチャーからルートとして Pycharm を実行する

    2. ウィンドウマネージャを使用してルートとしてプログラムを起動するにはどうすればよいですか?

    3. .sh ファイルがマルウェアになる可能性はありますか?