Tüm Linux Kullanıcıları PHP listeleri yapmak için nasıl?

3 Cevap php

I (otomatik) bir php tabanlı site kurmak istiyorum benim Ubuntu Server üzerinde bazı komutlar

Ben yaptım ilk şey (Sudoers) dosyasına gidiyor ve bu yüzden root yetkileri ile php komutları yürütebilirsiniz kullanıcı www-veri eklemek oldu!

# running the web apps with root power!!!
www-data    ALL=(ALL) NOPASSWD: ALL

sonra benim PHP kodu oldu

<?php
   $command = "cat /etc/passwd | cut -d\":\" -f1";
   echo 'running the command: <b>'.$command."</b><br />";
   echo exec($command);
?>

sadece bir kullanıcı (son kullanıcı) döndürür! nasıl tüm kullanıcılara iade yapmak için?

teşekkür ederim

3 Cevap

Exec üzerinde PHP manuel:

Değerler Dönüş

The last line from the result of the command. If you need to execute a command and have all the data from the command passed directly back without any interference, use the passthru() function. To get the output of the executed command, be sure to set and use the output parameter.

Yani buna benzer bir şey yapmak zorunda:

<?php
   $output = array();
   $command = "cat /etc/passwd | cut -d\":\" -f1";
   echo 'running the command: <b>'.$command."</b><br />";
   exec($command, &$output);
   echo implode("<br />\n", $output);
?>

Matt S dediğim gibi, bu sunucu üzerinde www-data root erişimine izin vermek için inanılmaz kötü bir fikir. Web uygulamaları aracılığıyla ufak bir uzlaşma sistem herkes tam kontrol izin verebilir.

Daha iyi bir fikir belirli katılımlar için ayrı komut ardından SUID izinleri kullanmak yapmak olacaktır. Bunun anlamı, belirli bir kullanıcı (bu durumda, www-data) komut icra yoluyla sisteme küçük değişiklikler yapabilirsiniz. Hala iyi bir fikir değil, olsa. Sen suPHP'lidir etrafında çalışmak ama güvenlik hala önemli bir sorundur mümkün olabilir.

/ Etc / passwd herkes tarafından okunabilir olduğunu, bu nedenle herhangi bir özel haklara sahip (PHP engeller sürece?) Olmadan komutu çalıştırmak gerekir.