スクリプト ファイルにルート パスワードを設定するのは、単純にばかげています。それをしないでください、より良い代替手段があります。このページでは、setuidビットを設定してシェル スクリプトを作成する方法と、最新の Linux ディストリビューションのほとんどがシェル スクリプトの setuid に課している制限を回避する方法について説明します。
ここでは、stackoverflow のガイドラインに準拠するために、重要な部分を要約します。最初に、次の内容.c
のファイルを作成します (名前は としましょうrunscript.c
):
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid( 0 );
system( "/path/to/script.sh" );
return 0;
}
apt-get install gcc
( debian ベースのディストリビューションに) gcc をインストールしてから、次のように入力します。
gcc -o runscript runscript.c
ここで、ルートとして次のように入力します
chown root:root runscript script.sh
chmod 4755 runscript script.sh
これで、すべてのユーザーが を実行できるようになり、ユーザーが root であるかのようrunscript
に実行されます。script.sh
両方のファイルが root によって所有され、root 以外のユーザーが書き込み可能でない限り、これはかなり安全であり、スクリプト ファイルにプレーンテキストで root パスワードを埋め込むよりもはるかに安全です。
script.py
何らかの理由でファイルに対してこれを機能させることに成功していないため、本当にpython スクリプトを実行したい場合は、script.sh
ファイルに間接的に実行させてください。これを行う場合は、上記のようにchown
とを使用して、python スクリプトの所有者と権限も設定することを忘れないでくださいchmod
。