Problème de droit sur le dossier tmp de apache... [Resolu][Mandrake] - Linux et OS Alternatifs
Marsh Posté le 24-01-2005 à 11:24:02
diverses solutions:
- chmod +t /root/tmp
- rmdir /root/tmp && ln -s /tmp /root/tmp
- configurer correctement apache pour qu'il mette ses fichiers dans /tmp
Marsh Posté le 24-01-2005 à 11:24:28
J'aurais plutot fait un urpmi apache2 ou je sais pas quoi, mais bon....
Ben épluche les fichiers de conf pour modifier la variable ou mieux, désinstalle ton bordel pour mettre le package.
Au pire un chown apache:apache /root/tmp ca devrait etre mieux.
Marsh Posté le 24-01-2005 à 11:32:39
ahh oui je viens de matter le man de chmod...et effectivement le chmod +t /root/tmp est pas mal...
Mais le probleme est que cela ne suffit pas de mettre les droits sur /root/tmp/ puisque les droits de /root sont deja insuffisants pour que apache aille jusqu'a /tmp.
J'ai deja essaye et cela ne marche que si je mets des droits aussi sur /root...mais c'est droits ne sont pas persistants.
sinon la solution du chown me plait bien...mais je ne comprend pas tres bien la syntaxe...
c'est koi le ...apache:apache...??
Marsh Posté le 24-01-2005 à 11:38:06
Hey si tu peux faire un man chmod tu dois réussir un man chown
chown user:group fichier donne la propriété de fichier à l'utilisateur user et au groupe groupe.
Marsh Posté le 24-01-2005 à 13:31:55
je me doutais que c'etait une histoire de group et de user...mais ce que je ne comprend pas c'est d'ou tu tires apache:apache....cad pkoi apache???
si moi mon executable se nomme httpd et se trouve ds /etc/rc.d/init.d/ dois je faire :
- addgroup httpd
- adduser httpd
- chown httpd:httpd /root/tmp
???
Marsh Posté le 24-01-2005 à 14:20:03
up please...
je galere avec ce pb...les droits sur root se reinitialisent toutes les 10 min...je ne peux pas travailler...help!!!
je suis oblige de faire toutes les 10 min un chmod 777 /root
Marsh Posté le 24-01-2005 à 14:22:42
Tu peux pas laisser à Apache l'accés au répertoire root. Donc faut changer la conf.
Marsh Posté le 24-01-2005 à 14:28:01
mais ca se change ou???
j'ai regarde dans httpd.conf
et nulle part il parle de /tmp ou equivalent...
je ne sais pas du tout ou ca se config
Marsh Posté le 24-01-2005 à 14:48:29
bon alors a titre informatif, pour les prochains qui auront mon pb, je crois avoir trouve la soluce...
tout se passe dans le php.ini :
il faut definir les repertoires temp :
session.save_path = "/tmp"
session.cookie_path = "/tmp"
ou autre chose...
bon j'espere que c est bien la soluce definitive...
en tout cas merci bcp
Marsh Posté le 24-01-2005 à 15:43:43
tu aurais installé les packages mdk, tu n'aurais pas eus tout ces pbs :
urpmi apache2 apache2-mod_php
Marsh Posté le 24-01-2005 à 16:29:06
ftp://ftp.proxad.net/pub/Distribu [...] k.i586.rpm
PHP5 existe pour la Mandrake 10.1 dans les média contrib
Marsh Posté le 24-01-2005 à 18:28:33
...en fait j'ai suivi un tutoriel sur le net qui expliquait comment installer Apache 2 + PHP 5.0.3 + MySQL 4.1.8 ....
et pour toutes les etapes il fallait compiler les sources...
cela permet d'activer des options que tu n'as pas si tu installe les packages...
par exemple le plus important pour moi etait de prendre en compte l'extension mysqli dispo depuis la version 4.1 de MySQL.
et pour ca il fallait...compiler PHP5 en indiquant l'option --with mysqli lors du ./configure...
enfin voila...
Sinon ca ne regle tjs pas mon GROS problème...qui est surement tres simple à régler pour un adepte confirmé de ce merveilleux systeme que l'on nomme Linux.
Je redecris donc mon petit soucis pour ceux qui n'ont pas suivi :
Apache utilise un repertoire temp a l'emplacement /root/tmp
hors il n'a pas les droits sur ce repertoire
Donc quand je fais un chmod 777 /root tout marche nikel...mais ce n'est que temporaire car au bout d'un moment les droits reviennent a 700 sur root...
Donc je cherche vraiment une solution definitive a ce pb...
Marsh Posté le 24-01-2005 à 18:29:52
kissskoool a écrit : |
Là tu tends le bâton...
Marsh Posté le 24-01-2005 à 18:33:43
je trouvais l'idee du chown pas mal...pour que apache puisse utiliser ce repertoire...hors l'executable n'appartient a aucun groupe ou user.
qd je fais un ps aux il me met ds le colonne user : nobody
alors que mysql par ex correspond au user mysql...
mais en fait j'ai un repertoire /tmp en racine qui a les droits 777 tout le temps...il est par ex utilise par mysql et kde...
j'aimerais bien que ce rep soit aussi utillise par apache...
mais je ne trouve pas ou changer ce path...
au debut je pensais que ca se passait dans php.ini...et j'ai alors ecris :
session.save_path = "/tmp"
session.cookie_path = "/tmp"
et redemarre apache...
mais rien n'y fait...
il utilise tjs /root/tmp... ;(
Marsh Posté le 24-01-2005 à 18:36:47
mirtouf a écrit : Là tu tends le bâton... |
oui je sais que c'est pas une soluce propre ...mais en attendant je ne sais pas quoi faire ...et il faut absolument que le serveur soit en prod.
je suis meme preneur si qqun sait comment faire un script qui fout les droits 777 en permanence sur /root en attendant que je trouve une vraie solution
parce que la je dois faire ca tout le temps a la main...c la galere...
Marsh Posté le 24-01-2005 à 18:46:28
si ca peut aider voila les messages d'erreur que j'ai :
Warning: session_start() [function.session-start]: open(/root/tmp/sess_dcd1dc30c62a61001567c91d977b0f85, O_RDWR) failed: Permission denied (13) in /usr/local/apache2/htdocs/agat_sr/accueil_final.php on line 4
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /usr/local/apache2/htdocs/agat_sr/accueil_final.php:4) in /usr/local/apache2/htdocs/agat_sr/accueil_final.php on line 4
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache2/htdocs/agat_sr/accueil_final.php:4) in /usr/local/apache2/htdocs/agat_sr/accueil_final.php on line 4
Warning: Cannot modify header information - headers already sent by (output started at /usr/local/apache2/htdocs/agat_sr/accueil_final.php:4) in /usr/local/apache2/htdocs/agat_sr/accueil_final.php on line 9
Marsh Posté le 24-01-2005 à 19:05:55
bon je viens de trouver une soluce qui marche aussi qui me semble plus propre et moins penible pour moi :
taper export TMP=/tmp et export TMPDIR=/tmp avant de lancer le serveur apache
Marsh Posté le 24-01-2005 à 19:07:49
mais a propos de cette soluce j'ai qd meme deux questions :
- cela va t il poser des problemes pour les autres applications ???
- cette solution est elle persistante au moins si je ne redemarre pas la machine??
Merci
Marsh Posté le 24-01-2005 à 19:11:26
Citation : |
Marsh Posté le 24-01-2005 à 19:35:50
pas mal...un script shell qui fait ca au demarrage de la machine.
mais alors ma derniere question est la suivante :
cela va t il poser des pb pour les autres applications???ou je ne sais quel autre pb...que je change ce tmpdir.sh definitivement??
Marsh Posté le 24-01-2005 à 20:22:17
regarde le script ..
par défaut TMPDIR et TMP valent /tmp sauf lorsque l'on est dans un niveau de sécurité élevé sous mdk.
donc cela ne devrait pas poser pb.
Marsh Posté le 25-01-2005 à 08:53:25
kissskoool a écrit : si ca peut aider voila les messages d'erreur que j'ai : |
Bein c'est bizarre ça, php veut écrire dans /root/tmp ... tu as bien modifié les valeurs "upload_tmp_dir = /tmp" et "session.save_path = /tmp" dans le bon php.ini. Tu as redémarré Apache ? Ou alors y'a autre chose ...
Marsh Posté le 25-01-2005 à 09:57:10
oui j'ai fait tout ca...je ne comprend vraiment pas...
mais qu'est ce que ca veut dire : TMPDIR=${HOME}/tmp ???
si l'utilisateur est root : TMPDIR = root/tmp ??
Marsh Posté le 25-01-2005 à 10:00:20
${HOME}=/root si tu es root donc si TMPDIR=${HOME}/tmp alors TMPDIR=/root/tmp
Marsh Posté le 25-01-2005 à 10:05:32
kissskoool a écrit : j'ai telecharge les sources...et j'ai compilé.. |
Tu as pris quelle version et tu as compilé comment ? Tu as aussi installé MySQL ?
Marsh Posté le 25-01-2005 à 10:12:02
oui j'ai installe mysql 4.1.9 et apache 2.0.52...
J'ai telecharge les sources sur leur sites respectifs...et j'ai compile...
Marsh Posté le 25-01-2005 à 10:16:42
mais en fait j'ai trouve une solution temporaire, mais je ne sais pas comment la rendre definitive...
avant de lancer le serveur apache...je tape export TMPDIR=/tmp et export TMP=/tmp.
ensuite je tape env | grep tmp...et ca a bien fixe mes TMPDIR et TMP a /tmp.
Sauf qu'au bout d'un certain temps ...meme sans rebooter...ils reviennent a :
TMPDIR = /root/tmp
TMP = /root/tmp
Au secours...c un serveur en prod dans une entreprise...j'ai des erreurs tout le temps dessus a cause de ca...je vais devenir fou...!!!!
Marsh Posté le 25-01-2005 à 10:21:59
oui je sais...mais qd meme ...y a bien une autre soluce...je veux juste que TMPDIR et TMP restent a /tmp...ca doit pas etre complique qd meme...! non??
J'ai mis trop de temps a installer ce serveur Web ...et la il tourne mis a part ce petit pb...
Marsh Posté le 25-01-2005 à 10:25:46
Le temps que tu perds à résoudre ce "petit" problème, tu aurais pu installer le bon apache/php via rpm, avec la conf-qui-va-bien et le confort des updates en cas de faille.
Marsh Posté le 25-01-2005 à 10:27:29
oui je sais mais...si j'ai un creneau...c'est sur que je fait ca...la j'ai vraiment trop de pb...!!! mais il faut que ca marche...
voila ce que j'ai tape pour configurer Apache...:
./configure --prefix=/usr/local/apache2 --enable-so
Marsh Posté le 25-01-2005 à 11:00:40
bon une petite question :
si je fais ca, est ce que ca marche :
[root@info1 ~]# cat /etc/profile.d/tmpdir.sh
#!/bin/sh
# $Id: tmpdir.sh,v 1.12 2003/09/02 09:37:49 flepied Exp $
# Set TMPDIR to ~/tmp and create it if directory not exist.
if [ -f /etc/sysconfig/system ];then
. /etc/sysconfig/system
fi
if [ -f /etc/sysconfig/msec ];then
eval `grep ^SECURE_LEVEL= /etc/sysconfig/msec | head -1`
fi
if [[ "$SECURE_TMP" = "yes" || "$SECURE_TMP" = "1" || "$SECURE_TMP" = "YES" || "$SECURE_LEVEL" -ge 2 ]];then
if [ -d ${HOME}/tmp -a -w ${HOME}/tmp ];then
export TMPDIR=/tmp
export TMP=/tmp
elif mkdir -p ${HOME}/tmp >/dev/null 2>&1;then
chmod 700 ${HOME}/tmp
export TMPDIR=/tmp
export TMP=/tmp
else
export TMPDIR=/tmp/
export TMP=/tmp/
fi
fi
au lieu de ca :
[root@info1 ~]# cat /etc/profile.d/tmpdir.sh
#!/bin/sh
# $Id: tmpdir.sh,v 1.12 2003/09/02 09:37:49 flepied Exp $
# Set TMPDIR to ~/tmp and create it if directory not exist.
if [ -f /etc/sysconfig/system ];then
. /etc/sysconfig/system
fi
if [ -f /etc/sysconfig/msec ];then
eval `grep ^SECURE_LEVEL= /etc/sysconfig/msec | head -1`
fi
if [[ "$SECURE_TMP" = "yes" || "$SECURE_TMP" = "1" || "$SECURE_TMP" = "YES" || "$SECURE_LEVEL" -ge 2 ]];then
if [ -d ${HOME}/tmp -a -w ${HOME}/tmp ];then
export TMPDIR=${HOME}/tmp
export TMP=${HOME}/tmp
elif mkdir -p ${HOME}/tmp >/dev/null 2>&1;then
chmod 700 ${HOME}/tmp
export TMPDIR=${HOME}/tmp
export TMP=${HOME}/tmp
else
export TMPDIR=/tmp/
export TMP=/tmp/
fi
fi
Marsh Posté le 25-01-2005 à 11:01:53
grep tmp /etc/php.ini
ça te donne quoi?
Marsh Posté le 25-01-2005 à 11:06:31
alors mon php.ini se trouve ds /usr/local/apache2/conf/
et qd je fais grep tmp php.ini j'obtiens :
upload_tmp_dir = /tmp
session.save_path = /tmp
session.cookie_path = /tmp
soap.wsdl_cache_dir="/tmp"
Marsh Posté le 25-01-2005 à 11:11:13
et par hasard, t'aurais pas un autre fichier php.ini qq part dans etc?
find /etc -name php.ini (voire essaye sur toute ton arborescence)
edit: ça m était arrivé sur Solaris...
Marsh Posté le 24-01-2005 à 11:02:56
Bonjour,
J'ai installé Apache 2 sur une Mandrake 10.1...
Tout marche super bien...a part qu' Apache se sert d'un dossier temp sur lequel il n'a pas les droits qui se situe dans /root/tmp...
Pour l'instant la seule soluce que j'ai trouve est de foutre un chmod 777 sur root...
Mais ca ne peut etre qu'une solution temporaire...car en plus les droits reviennent regulierement a ce d'origine...comme si linux verifiait les droits sur /root
Y a t 'il une solution pour changer le repertoire tmp dont se sert Apache??
Merci
Message édité par kissskoool le 25-01-2005 à 15:06:29