Page 1 of 1
Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:14
by thiefmaster
Hallo,
ich würde den webs gerne PHP-Zugriff auf `uptime` erlauben.
Deswegen hab ich einen Symlink in /home/www/empty (das ja safe_mode_exec_dir ist) erstellt.
Aber weder echo exec('uptime'); noch echo exec('/home/www/empty/uptime'); geben etwas aus :(
Ganz zur Not werde ich halt für die webs den safe_mode deaktivieren, aber das will ich wenn möglich vermeiden ;)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:19
by floschi
Hm, geht's evtl. übers /proc ? Da gibt's was ähnlcihes... cat /proc/uptime oder so...
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:21
by thiefmaster
Auf /proc kann doch wegen dem safe_mode von confixx auch nicht zugegriffen werden, oder?
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:29
by floschi
ThiefMaster wrote:Auf /proc kann doch wegen dem safe_mode von confixx auch nicht zugegriffen werden, oder?
Probier's aus :P
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:33
by thiefmaster
Mit cat /proc/uptime kann ich leider nichts anfangen, weil das wBB2 die Ausgabe vom noramlen `uptime` parst.
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:36
by floschi
Du weisst aber schon, dass du den safe_mode auch für einzelne VHosts deaktivieren kannst? Und dann mit open_basedir auch Sicherheit herstellen kannst... evtl. noch disable_functions in der php.ini entsprechend setzen
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 20:38
by thiefmaster
Ja...
ThiefMaster wrote:Ganz zur Not werde ich halt für diese webs den safe_mode deaktivieren, aber das will ich wenn möglich vermeiden
open_basedir ist bei Confixx ja eh standardmäßig an (und ich hab ja keinen Grund, meinen eigenen Server zu hacken :D).
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 21:03
by oxygen
ThiefMaster wrote:Hallo,
ich würde den webs gerne PHP-Zugriff auf `uptime` erlauben.
Deswegen hab ich einen Symlink in /home/www/empty (das ja safe_mode_exec_dir ist) erstellt.
Aber weder echo exec('uptime'); noch echo exec('/home/www/empty/uptime'); geben etwas aus :(
Ganz zur Not werde ich halt für die webs den safe_mode deaktivieren, aber das will ich wenn möglich vermeiden ;)
Wenn das funktionieren würde wäre der safemode ja Sinnfrei. Da ist nix mit FollowSymlinks. Wenn safe_mode bzw basedir restriction an ist, gehts nunmal nicht.
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 21:29
by mark
Probier mal die uptime binary in das /home/www/empty zu kopieren....
Ich hatte mal ein ähnliches Problem mit ImageMagick und nach dem reinkopieren, ging es auch im safemode. (Ohne Pfadangabe, glaube ich).
Gruß
mark
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 21:34
by captaincrunch
Probier mal die uptime binary in das /home/www/empty zu kopieren....
Und wenn's das "normale" Binary nicht tut, bau dir ein statisch kompiliertes. uptime benutzt im Normalfall nämlich noch ein paar dynamisch gelinkte Bibliotheken :
Code: Select all
ldd /usr/bin/uptime
libproc.so.2.0.7 => /lib/libproc.so.2.0.7 (0x4001f000)
libc.so.6 => /lib/libc.so.6 (0x4002d000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
(System Debian Woody, keine Ahnung, wie's unter SuSE aussieht ...)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 22:18
by thiefmaster
Also nur kopieren funktioniert nicht. :(
Wie compiliere ich mir denn ein statisches Binary?
Code: Select all
p********:/home/www/empty # ldd uptime
libc.so.6 => /lib/libc.so.6 (0x40019000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 22:50
by flo
Wenn Du per Cron /proc/uptime kopierst müsste das doch gehen, oder?
Ich habe eine Uptime-Statistik per PHP - aber als Shell-Script laufen:
Code: Select all
#!/usr/bin/php -q
<?
// Proc-FS auslesen
$fd = fopen('/proc/uptime', 'r');
$ar_buf = split(' ', fgets($fd, 4096));
fclose($fd);
$sys_ticks = trim($ar_buf[0]);
$uptime_mins = $sys_ticks / 60;
$uptime_hours = $uptime_mins / 60;
//
// Datenbankzugangsdaten
//
$db_host = "xxxx";
$db_user = "xxxx";
$db_pass = "xxxx";
$db_db = "xxxx";
$uptime_date = (date ("Y-m-d H:i:s"));
//
// Hostangaben
//
$uptime_ip = "xxxx";
$uptime_descr = "Mail- und DB-Server";
$uptime_days = floor($uptime_hours / 24);
$uptime_hours = floor($uptime_hours - ($uptime_days * 24));
$uptime_mins = floor($uptime_mins - ($uptime_days * 60 * 24) - ($uptime_hours * 60));
...
?>
Dann müsstest Du doch Dein Forum hinbekommen, oder?
Grüße,
flo.
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 22:53
by thiefmaster
Das Forum benötigt nur die 3 Load-Averages.
Deswegen nützt mit /proc/uptime leider ziemlich wenig :(
Code: Select all
if($uptime = @exec("uptime"))
{
if(preg_match("/averages?: ([0-9.]+),[s]+([0-9.]+),[s]+([0-9.]+)/",$uptime,$match))
{
$match[1]*=100;
$match[2]*=100;
$match[3]*=100;
$serverinfo = 1;
}
}
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 22:56
by oxygen
Ich glaub das hilft ihm aber nicht. Er möchte, dass das Woltlab Burning Board im ACP die Serverauslastung anzeigt. Das passiert mit folgendem Code:
Code: Select all
if($uptime = @exec("uptime")) {
if(preg_match("/averages?: ([0-9.]+),[s]+([0-9.]+),[s]+([0-9.]+)/",$uptime,$match)) {
$match[1]*=100;
$match[2]*=100;
$match[3]*=100;
Naja ich finde die Anzeige ziemlich sinnfrei, weshalb ich sie bei mir umgebaut habe. Den Hack gibts bei mywbb oder wbb-help.
EDIT: 2 .... ein Gedanke 8)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-16 23:09
by flo
Oh sorry ... man kann ja nicht alles kennen. ;-)
Zur Not mach halt den Uptime in eine Textdatei und lies die mit fopen ein, das wäre noch, was mir einfallen würde.
Grüße,
flo.
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-17 07:22
by thiefmaster
Stimmt, so könnte ich es machen:
Ein PHP-Cronjob schreibt `uptime` jede Minute in eine Textdatei (eigentlich könnte ich dafür doch auch den SHM nehmen, oder?).
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-17 14:14
by jtb
ThiefMaster wrote:Hallo,
ich würde den webs gerne PHP-Zugriff auf `uptime` erlauben.
Deswegen hab ich einen Symlink in /home/www/empty (das ja safe_mode_exec_dir ist) erstellt.
safe_mode_exec_dir verhindert Symlinknutzung..
kopiere die Binary (und strippe sie eventl.)..
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-17 22:36
by mark
Mir ist da noch was eingefallen.
Hat dein Safe_exec_dir auch die Rechte 445 oder so ? der Webserver "muss" da drin lesen können...
Bei dem /home/www/empty Verzeichnis sind die Rechte zu anfang:
dr--r--r-- 2 root root 4096 Okt 8 2002 empty
Mach darauf chmod +x empty und es sollte mit den binaries da drin gehen.
Das habe ich auf meinem Server damals auch gemacht und das hat funktioniert. In meinem Fall waren das aber die binaries von imagemagick.
Code: Select all
/home/www/empty # dir
total 124
dr--r--r-x 2 root root 4096 Feb 25 16:17 .
drwxr-xr-x 17 root root 4096 Mar 26 12:56 ..
-rwxr-xr-x 1 root root 20252 Feb 25 16:17 animate
-rwxr-xr-x 1 root root 34159 Feb 25 14:18 convert
-rwxr-xr-x 1 root root 30928 Feb 25 14:00 mogrify
-rwxr-xr-x 1 root root 24644 Feb 25 16:17 montage
Und das die binaries mit dyn. Bibliotheken verlinkt sind, ist egal.
Man schaue mein animate binary an:
Code: Select all
/usr/local/httpd/htdocs/kunden/empty # ldd animate
libMagick.so.5 => /usr/lib/libMagick.so.5 (0x40025000)
liblcms.so.1 => /usr/lib/liblcms.so.1 (0x40111000)
libtiff.so.3 => /usr/lib/libtiff.so.3 (0x40124000)
libfreetype.so.6 => /usr/local/php_files/lib/libfreetype.so.6 (0x40168000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x401b8000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x401d7000)
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x401e5000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40233000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4023d000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x40255000)
libz.so.1 => /lib/libz.so.1 (0x40339000)
libpthread.so.0 => /lib/libpthread.so.0 (0x40348000)
libm.so.6 => /lib/libm.so.6 (0x4035e000)
libdl.so.2 => /lib/libdl.so.2 (0x4037d000)
libc.so.6 => /lib/libc.so.6 (0x40381000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-17 22:45
by thiefmaster
JUHU, das war es.
CHMOD 755 funktioniert einwandfrei.
445 müsste aber auch gehen ;)
Re: Zugriff auf `uptime` aktivieren
Posted: 2003-04-17 22:47
by mark
Und alles löst sich in Wohlgefallen auf :)
Hätte ich aber auch eher dran denken können, weil an dem Problem hab ich auch eine ganze Weile geknabbert. Allerdings war das schon wieder lange her... Ich sollte sowas mal irgendwo aufschreiben...
Wie wäre es, dass das obige in die FAQ kommt ?
Gruß
Mark