IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème de droits sur un fichier


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut Problème de droits sur un fichier
    Bonjour,

    je souhaite parcourir le fichier /etc/passwd d'Unix (Mandriva 2005) pour récupérer les informations.

    le script Php marche je l'ai testé sur un fichier que j'avais le droit de lire mais quand je veux le faire avec le fichier /etc/passwd, Apache me renvoit le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: fopen(passwd) [function.fopen]: failed to open stream: No such file or directory in /usr/local/apache/2.0.54/www/test.php on line 14
    Impossible d'ouvrir le fichier
    Jusque là rien d'anormal puisqu'il faut être root pour pouvoir ouvrir ce fichier même en lecture.

    A votre avis comment puis je faire pour forcer l'ouverture de ce fichier ?

    Je vous joint mon code source, désolé pour l'indentation qui n'est peut être pas terrible.

    Meci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    <html>
     
    <head>
     
    	<title>Test parcours /etc/passwd</title>
     
    </head>
     
    <body>
     
     
     
    <?
     
    $fichier2 = fopen("/etc/passwd", "r") or die("Impossible d'ouvrir le fichier");
     
    	$ligne = fgets($fichier2,4096);
     
    	$tableau2 = explode(":","$ligne");
     
    fclose($fichier2);
     
     
     
     
     
    $fichier = fopen("passwd", "r") or die("Impossible d'ouvrir le fichier");
     
    echo "<form name=\"formulaire\" method=\"POST\" action=\"\">";
     
    ?>
     
     
     
    User : <select name="utilisateur" onchange="submit();">
     
    <?
     
    while(!feof($fichier)){
     
    	$ligne = fgets($fichier,4096);
     
     
     
    	$tableau = explode(":","$ligne");
     
     
     
    	echo "<option value=\"$tableau[0]\"";
     
    			if(isset($_POST['utilisateur']) && ($_POST['utilisateur'] == $tableau[0])){
     
    				echo "selected";
     
    				$i = $tableau[2];
     
    				$j = $tableau[3];
     
    				$k = $tableau[4];
     
    				$l = $tableau[5];
     
    				$m = $tableau[6];
     
    			}
     
    echo "	>
    
    			$tableau[0]
    
    		</option>";
     
    }
     
     
     
    echo "</select><br/>";
     
     
     
    echo "Nom complet : ";
     
     
     
    echo "<input type=\"text\" name=\"nom\" size=\"25\" value=\"";
     
    	if(isset($i)){	
     
    		echo($i);
     
    	}
     
    	else{   
     
    		echo $tableau2[2];
     
    	}
     
    echo "\" >";
     
     
     
    echo "<br/>";
     
     
     
    echo "UID : ";
     
    echo "<input type=\"text\" name=\"uid\" size=\"25\" value=\"";
     
    	if(isset($j)){	
     
    		echo($j);
     
    	}
     
    	else{   
     
    		echo $tableau2[3];
     
    	}
     
    echo "\" readonly>";
     
     
     
    echo "<br/>";
     
     
     
    echo "GUID : ";
     
    echo "<input type=\"text\" name=\"uid\" size=\"25\" value=\"";
     
    	if(isset($k)){	
     
    		echo($k);
     
    	}
     
    	else{   
     
    		echo $tableau2[4];
     
    	}
     
    echo "\" readonly>";
     
     
     
    echo "<br/>";
     
     
     
    echo "Dossier personnel : ";
     
    echo "<input type=\"text\" name=\"uid\" size=\"25\" value=\"";
     
    	if(isset($l)){	
     
    		echo($l);
     
    	}
     
    	else{   
     
    		echo $tableau2[5];
     
    	}
     
    echo "\" >";
     
     
     
    echo "<br/>";
     
     
    //ne pas prendre en compte, ca marche pas
     
    $chaine2 = substr($tableau2[6],0,strlen($tableau2[6])-2);
     
     
     
    echo "Shell : ";
     
    echo "<select name=\"shell\">";
     
     
     
    $sh= "/bin/sh";
     
    $bash = "/bin/bash";
     
     
     
    if(isset($m)){
     
    		if ($tableau[6] == $sh){
     
    		echo "<option value=$bash>$bash</option>
    
    			<option value=$sh selected>$sh</option>";
     
    		}
     
    		if ($tableau[6] == $bash){
     
    		echo "<option value=$bash selected>$bash</option>
    
    			<option value=$sh>$sh</option>";
     
    		}
     
    }
     
    else{
     
     
     
    			if($chaine2 == $sh){
     
     
     
    			echo "<option value=$bash>$bash</option>
    
    				<option value=$sh selected>$sh</option>";
     
    			}
     
    			if($chaine2 == $bash){
     
     
     
    			echo "<option value=$bash selected>$bash</option>
    
    				<option value=$sh>$sh</option>";
     
    			}
     
    		}   
     
    echo "</select><br/>";
     
    //fin de ne pas prendre ne compte
     
     
    fclose($fichier);
     
    ?>
     
    </form>
     
    </body>
     
    </html>

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    Mars 2003
    Messages
    1 281
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 1 281
    Points : 1 999
    Points
    1 999
    Par défaut
    Ton problème n'a rien à voir avec PHP mais Linux.

    Il te suffit de donner au fichier passwd les droits de lecture pour le groupe Apache. Néanmoins, je trouve ceci extrêmement dangereux.

  3. #3
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Warning: fopen(passwd) [function.fopen]: failed to open stream: No such file or directory in /usr/local/apache/2.0.54/www/test.php on line 14
    Faut lire un peu les erreurs hein, pour un utilisateur linux tu devrais facilement savoir d'ou vient le problème ...

  4. #4
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Moi aussi c'est pourquoi j'aurais voulu savoir si il n'y avais pas une autre solution.

    Sinon comment puis je faire pour ne donner le bit r que au groupe Apache ?

  5. #5
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    désolé j'ai fait un mauvais copier coller de l'erreur, l'erreur est bien que je n'ai pas les droits

  6. #6
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Ok donc si tu as permission denied c'est bien un problème de droit dans ce cas.

    Pour changer les droits en PHP c'est chmod().

    Cependant si tu es administrateur de ton système tu peux changer toi même les droits via un chmod sur ton shell.

  7. #7
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    le probleme c'est que si je mets un chmod dans le code php j'ai exactement le même problème vu que je suis toujours pas root et le chmod dans le shell c'est pas top top au niveau sécurité.

  8. #8
    Membre actif Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Points : 237
    Points
    237
    Par défaut
    Prblme Résolu.

    Me demander pas pourquoi ca a marché d'un coup, je n'en ai aucune idée, toujours est-il que ca marche.

    Merci pour votre aide les amis et à bientôt pour de nouvelles aventures...

  9. #9
    Membre habitué Avatar de remyli
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 270
    Points : 151
    Points
    151
    Par défaut
    Et l'aventure continue avec un pb qui ressemble sur : http://www.developpez.net/forums/vie....php?p=2605962

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de droit sur fichier
    Par islande dans le forum Administration système
    Réponses: 2
    Dernier message: 20/03/2013, 15h03
  2. Problème de droits sur fichiers
    Par Kamoo dans le forum Périphériques
    Réponses: 6
    Dernier message: 03/10/2012, 12h53
  3. Problème de droits sur répertoires et fichiers
    Par cdsoft dans le forum Windows 7
    Réponses: 14
    Dernier message: 19/07/2012, 16h53
  4. Problèmes de droits sur des fichiers
    Par buxbux dans le forum Administration système
    Réponses: 16
    Dernier message: 29/09/2011, 18h33
  5. problème de droits sur fichiers ou dossiers créés
    Par speedev dans le forum Réseau
    Réponses: 0
    Dernier message: 19/11/2009, 12h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo