2011-08-11 46 views
1

最近我一直在尋找一個PHP/Linux的shell腳本,將來自「WWW的數據」當前工作的用戶切換到另一個。有什麼方法可以在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

首先,您可能不應該使用網頁來啓動本地服務。其次,'sudo'是作爲另一個用戶運行的命令。這不僅僅是爲了根! –

回答

1

你不能從一個普通用戶到另一個Unix系統改變。如果冒充另一個模型的話,它會完全消除安全系統的問題,那就是posix_setuid(id of victim)

你得開始你的PHP腳本作爲根,然後做一個posix_seteuid()承擔其它ID。

更安全的替代是運行腳本作爲一個普通用戶,然後EXEC()的調用出來sudo來運行你的CoD啓動腳本。

相關問題