Droits : checker "/proc" impossible via php en http

Bonjour bonsoir !

Je possède un petit serveur debian (wheezy)et je découvre cet OS depuis peu, donc je n’y connais pas grand chose, veuillez excuser d’avance mon igniardise :shifty: .
Cependant j’adore découvrir comment ça fonctionne, et la plupart des problèmes que je rencontrent se résolvent bien plus simplement que ce à quoi je m’attendais (je viens de windows, m’voyez ?).
En tant que bon serveur web, j’ai installé php 5, et tout marche nikel, sauf pour ce qui est des droits. D’après ce que j’ai pu voir, www-data ne peu pas faire grand chose avec la configuration par défaut, je n’arrive pas à utiliser la commande exec() pour certaines commandes comme “cp” par exemple (en revanche le ping marche de n’importe où).
Mais là où c’est vraiment problématique, c’est que je ne peu plus vérifier l’existence d’un PID. Sur un autre serveur j’y arrivais en utilisant <?php file_exists("/proc/$pid") ?>Cette fonction me retourne systématiquement un false quand j’appelle le script à partir de http. En revanche, en l’executant via ssh sous root, ça fonctionne bien, j’en déduis que c’est bien un problème de droit d’accès.
J’ai essayé de changer le chown ou le chmod de “proc/*”, mais rien à faire, même le root n’a pas le droit de faire ces changements.

J’en conclus que je m’y prend mal, et tout ce que j’ai pu voir sur le net ne m’a mené nulle part, mes questions sont aussi restées sans réponse concrètes sur OC ou php France, et je remercie d’ailleurs ceux qui ont pris le temps de me lire et me répondre, ici ou là-bas (Pour les intéressés : Topic Open Classroom et Topic php France).

Je cherche avant tout à comprendre, et merci pour votre temps :smiley: .

J’ai aussi lu dans le post-it qu’il fallait mettre sa version du noyau :

Salut
Non il ne faut pas modifier les droits dans /proc, c’est pas conseillé.
C’est quoi ton serveur web ? Il est peut-être chrooté, simplement.

Je ne comprend pas la question :confused: Je suis sur un vps chez ovh, c’est vrai que j’ai oublié de dire qu’avec le même OS, je n’avais pas ce problème sur d’autres serveurs, ovh doit sans doute changer un peu la config par défaut dans ce cas.
Je vais voir ce qui en est pour ce “chroot”, je ne connais pas du tout, je vais explorer cette voie.

Merci !

Attention, les VPS sont des systèmes virtualisés. Tu n’as pas le droit de faire n’importe quoi dessus (et généralement pas le droit de toucher à /proc).

En ce qui concerne ton problème, /proc/$PID est certainement un répertoire. Je ne connais pas PHP, mais je parie que file_exists renvoie false si l’argument correspond au chemin d’un répertoire.

EDIT : Non, j’ai tort, en fait. php.net/manual/fr/function.file-exists.php Qu’en est-il de ce fameux safe-mode ?

File_exists() renvoie un false, c’est parce que je n’ai pas le droit d’accéder au PID et de vérifier s’il existe, c’est donc une erreur qui est renvoyée (et quand j’exécute le script via ssh en root, il me renvoie le true attendu). J’ai cherché tout ce qui pouvais venir à mon sens de PHP que je connais bien mieux que debian, y compris le safe_mode, qui n’est pas en cause (j’ai vérifié).

Là où je suis étonné, c’est que sur un autre VPS de chez ovh (même OS, même version, matériel un peu différent), j’avais le droit de checker “/proc/$pid”, et ça fonctionnait parfaitement via http (qui je crois fait parti du groupe www-data sur ma machine).
Je trouve bizarre que je n’arrive pas à trouver de réponse à ce problème sur google, étant donné que cette fonction est pas mal utilisée pour checker un PID.

le chroot me semble être une bonne piste, d’après ce que j’ai lu c’est pas mal utilisé dans le cas de VPS, même si je n’en saisis pas très bien la porté et l’utilité sur ce VPS. J’espère néanmoins que c’est réversible :think: .

En tout cas merci pour votre réponse, ça fait toujours plaisir :smiley:

EDIT : Suis-je bête, un autre utilisateur ne peu pas voir ces PID en questions car ils ont été lancé en root ! Je ne savais pas qu’ils n’apparaissaient pas dans /proc pour l’utilisateur www-data. Du coup je vais voir s’il y a un moyen pour rendre ces PID visible.

Je viens de relire un check zabbix que j’ai écrit il y a quelques temps et qui fouille lui aussi dans /proc.
En fait j’ai utilisé sudo pour octroyer à Zabbix le droit d’utiliser la commande ls en root :

(visudo)

Ainsi il peut lister le contenu de /proc.
Tu pourrais faire pareil avec php ? Par contre attention aux failles, le langage n’est pas réputé pour sa sûreté.

Après installation de zabbix, il semble que la commande ne marche pas non plus si le script php est appelé via HTTP.
Je vais tenter de modifier le programme pour lancer les processus depuis www-data et non root, je pourrais peut être les récupérer ainsi, même si cette méthode n’est pas top.
C’est drôle, zabbix fait un peu la même chose que les pid que j’essaye de récupérer, de la surveillance réseau et performance à priori :unamused: .

Je ne suggérais pas d’installer Zabbix, je donnais un exemple de la manière de procéder pour Zabbix.
Pour PHP il suffit juste de modifier ce que j’ai mis dans visudo.
Cela doit donner un truc du genre :

Par contre comme je l’ai dit, je ne suis pas sûr que ce soit très propre/sûr.
Mais bon à partir du moment où php doit fouiner dans ton système, il n’y a pas le choix.

Bonjour !

Désolé d’avoir laissé trainer ce sujet mais je suis parti en vacances et à mon retour je n’avais pas vraiment de solutions à mon problème jusqu’à aujourd’hui.
En fait la solution est assez simple, et confirme que je suis un gros naze en ce qui concerne les distributions linux (et j’ai aussi mal compris pour zabbix, désolé). La faute à windows on va dire ?

Bon eh bien en fait, en bon utilisateur windows, j’aimais bien piloter mon serveur en root, et je lançait donc ces programmes en root.
Sauf que www-data, le groupe représentant mon serveur web (et donc l’utilisateur http), ne peu apparemment pas voir les PID que root a lancé (d’ailleurs /proc possède plein de fichiers quand je l’explore avec root, et beaucoup moins avec un autre utilisateur).
Donc ben j’ai simplement lancé mes programmes avec un utilisateur standard, et là www-data peut y accéder, ou du mois les voir. Et de ce que j’ai testé, ça marche avec des utilisateur dans des groupes d’admin, et avec des utilisateurs avec les droits par défaut.

J’ai loué un autre serveur (dédié cette fois-ci) pour diverses raison, et cette solution marche aussi. D’ailleurs pour le formatages des 2 disques j’ai aussi consulté un des posts de ce forum, et je continue à en apprendre.

Merci pour votre aide !