2011-08-11 16 views
1

最近私は、現在の作業ユーザを "www-data"からもう一方に変更するPHP/Linuxシェルスクリプトを探していました。PHP(Ubuntu)で現在のユーザを変更する方法はありますか?

私はこのサービスを実行しようとしました:http://cfgfactory.com/images/servers_hire.png基本的には「義務4の呼び出し」サーバを起動していますので、サーバからファイルをダウンロードさせてしまう義務4私は../../../var/www/config.phpをダウンロードしようとしましたが、うまくいきました...だから、このサービスの新しいユーザーを設定したので、ユーザーを変更する方法が必要なのです。

サーバーを起動する方法は次のとおりです。

function start_cod4($mod,$port,$id){ 


    $cod4_dir = '/home/bartz/cod4/'; 
    if(getcwd() != $cod4_dir){ 
      chdir($cod4_dir); 
    } 

    $run = array(
    'sv_hostname' => 'Hire & Play No.'.$id.' by ^1CFG^7Factory.com/host/ - Free game server hiring !', 
    'rcon_password' => substr(md5(uniqid()),0,5), 
    'g_password' => 'war'.substr(md5(uniqid()),0,3) 
    ); 

    exec('nohup ./cod4_lnxded +set s_num='.$id.' +set net_port '.$port.' +set dedicated 2 +set fs_game mods/'.$mod.' +set sv_punkbuster 1 +set sv_hostname "'.$run['sv_hostname'].'" +set rcon_password "'.$run['rcon_password'].'" +set g_password "'.$run['g_password'].'" +set promod_mode match_mr10 +set g_gametype sd +map '.random_map().' > /dev/null 2>&1 &'); 
    return $run; 

} 

したがって、現在の作業ユーザーを別のものに変更するPHPまたはSHスクリプトが基本的に必要です。

ありがとうございます!

+0

ユーザーを変更すると、間違った考えのように思えますが、私はちょうど良い解決策を知らない。 – MitMaro

+0

最初に別の名前でCoDサーバを起動できないのはなぜですか?あなたのスクリプトはサーバを起動しますか? – Brad

+0

まず、ローカルサービスを開始するためにWebページを使用しないでください。第2に、 'sudo'は別のユーザーとして物事を実行するコマンドです。それだけではルートのためではありません! –

答えて

1

Unixシステムでは、通常のユーザーから別のユーザーに変更することはできません。セキュリティシステムを完全に犠牲にするのは、別のものに偽装するのにかかる時間がposix_setuid(id of victim)だった場合です。

PHPスクリプトをrootで起動してから、posix_seteuid()を実行してもう一方のIDを引き受ける必要があります。

より安全な代替手段は、通常のユーザーとしてスクリプトを実行してから、sudoにコールを出してCoD起動スクリプトを実行することです。

関連する問題