本当に注意してください: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 ビットを設定しないでください。