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 Perl Discussion :

Modifier droit d'un dossier en perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Par défaut Modifier droit d'un dossier en perl
    Bonjour a tous,
    j'ai un petit souci avec des droit de dossier, en effet, j'ai un script qui doit faire de la manipulation de fichier, mais celui ci ne marche que si mon dossier est est chmod 777, ce qui est un peu embetant, j'ai donc voulu modifier les droits de ce dossier en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	chmod(0777, "$dir");
    avec $dir qui est le path absolu de mon dossier( /home/...)
    mais cela ne fonctionne pas, quelqu'un sait comment faire ?

    merci de votre aide

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    chmod LISTE

    Change les permissions d'une liste de fichiers. Le premier élément de la liste doit être le mode numérique, qui devrait être un nombre en octal et non une chaîne de chiffres en octal : 0644 est correct, mais pas '0644'. Retourne le nombre de fichiers dont les permissions ont été changées avec succès. Voir aussi oct, si vous ne disposez que d'une chaîne de chiffres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       $cnt = chmod 0755, 'foo', 'bar';
        chmod 0755, @executables;
        $mode = '0644'; chmod $mode, 'foo';      # !!! fixe le mode à
                                                 # --w----r-T
        $mode = '0644'; chmod oct($mode), 'foo'; # ceci est mieux
        $mode = 0644;   chmod $mode, 'foo';      # cela est le meilleur
    Vous pouvez aussi importer les constantes symboliques S_I* du module Fcntl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        use Fcntl ':mode';
        chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
        # Identique au chmod 0755 de l'exemple précédent.
    je sais pas si tu peuux changer les droits d'un repertoire

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Par défaut
    merci pour ta réponse

    oui je suis tombé sur cet article en cherchant, mais il ne m'indique pas comment faire pour un repertoire,

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    t'es sous linux/unix je suppose?
    bah si le chmod de perl fonctionne pas, fait une commande system

  5. #5
    Jeh
    Jeh est déconnecté
    Membre expérimenté Avatar de Jeh
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    203
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 203
    Par défaut
    Ta syntaxe est correcte et chmod permet de changer les droits sur les répertoires.
    Le problème : tu dois vouloir changer les droits d'un répertoire qui n'appartient pas au groupe ou à l'utilisateur exécutant ton script Perl.

  6. #6
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: Modifier droit d'un dosier en perl
    Citation Envoyé par rafawel
    j'ai un petit souci avec des droit de dossier, en effet, j'ai un script qui doit faire de la manipulation de fichier, mais celui ci ne marche que si mon dossier est est chmod 777, ce qui est un peu embetant, j'ai donc voulu modifier les droits de ce dossier en faisant :

    avec $dir qui est le path absolu de mon dossier( /home/...)
    mais cela ne fonctionne pas, quelqu'un sait comment faire ?
    Si le script n'a pas les droits sur le répertoire, il serait étonnant qu'il en soit aussi propriétaire ... il ne risque donc pas de pouvoir faire aussi un chmod

    Sous quelle identité le script tourne t'il ?

    Qui est le propriétaire du répertoire ?

    Quels sont les droit sur le répertoires, avant le passage à 777 ?


    Citation Envoyé par djibril
    ...

    je sais pas si tu peuux changer les droits d'un repertoire
    Oui, on peut. Le x (le 1 de chaque chiffre, en notation octale) change alors de signification. Il ne veut plus dire exécution, mais exploration.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Par défaut
    Mon repertoire est en 755 normalement, mon script ne peut y avoir acces, je ne comprend pas l idée d'identité du script, il est sur le serveur, donc il devrait normalement avoir les droits.
    edit: je suis administrateur du systeme, je peut donc faire des chmod, mais je ne veut pas laisser ce repertoire en 777

  8. #8
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par rafawel
    Mon repertoire est en 755 normalement,
    755, ca veut dire Read/Write/Xplore pour le propriétaire (7), Read/Explore pour les gens de son groupe et pour les autres (5).

    Donc finalement, seul le propriétaire à le droit d'écrire dedans.

    Et comme le propriétaire est normalement le seul à pouvoir faire un chmod ...

    Le propriétaire et son groupe sont affichés quand tu fais un 'ls -al' au niveau du répertoire du dessus ...

    Citation Envoyé par rafawel
    mon script ne peut y avoir acces, je ne comprend pas l idée d'identité du script, il est sur le serveur, donc il devrait normalement avoir les droits.
    L'identité du script, c'est le plus souvent l'identité du processus qui l'a lancé ...

    Par qui ton script est-il lancé ?

    9,99 chances sur 10 pour que ce ne soit pas le propriétaire du fichier !

    Le fait d'être sur le serveur ne signifie pas avoir les droits sur les fichiers et répertoires. Il faut en être propriétaire ou être dans un groupe autorisé.

    C'est tout de même la base de la protection et de la sécurité des systèmes de fichiers sous *N*X !!!

    Citation Envoyé par rafawel
    edit: je suis administrateur du systeme, je peut donc faire des chmod, mais je ne veut pas laisser ce repertoire en 777
    Si tu es administrateur, tu dois pouvoir lancer manuellement le script, en tant que root ...

    Ca devrait être miraculeux et fonctionner

    Ce n'est cependant pas la bonne solution car ce n'est pas sûr.

    Ton problème se trouve dans la gestion des droits et des propriétaires du répertoire. C'est tout ce qu'on peut te dire avec le peu d'information que tu nous transmets ...

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 20
    Par défaut
    En fait le script est une interface d'administration appelée par un explorateur internet, l'utilisateur a acces a un systeme d'upload de fichier, qui ne marche que sur des fichiers 777, je ne vois pas trop comment donner des droits partculiés a cet utilisateur vu que le script est excecuté par l'explorateur.

    désolé pour les imprecisions

  10. #10
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Citation Envoyé par rafawel
    En fait le script est une interface d'administration appelée par un explorateur internet, l'utilisateur a acces a un systeme d'upload de fichier, qui ne marche que sur des fichiers 777, je ne vois pas trop comment donner des droits partculiés a cet utilisateur vu que le script est excecuté par l'explorateur.
    Alors vu sous cet angle, ton problème prend une allure un peu plus classique ...

    Sur le serveur, le script Perl est un CGI ou assimilé, invoqué par le processus serveur apache, non ?

    Les manipulations de fichiers se font alors, pour des raisons assez évidentes de sécurité, sous l'identité du processus qui lance apache. Celui-ci est généralement un utilisateur système "apache", bien moins privilégié que root.

    Le problème peut être réglé en faisant lancer apache par root, ce qui représente quand même un sérieux risque pour la sécurité ...

    On peut aussi faire lancer apache par l'utilisateur à qui appartient ce répertoire.

    On peut aussi attribuer le répertoire à l'utilisateur apache.

    On peut aussi changer la sécurité du répertoire pour un 775, au lieu du 755, et ajouter l'utilisateur apache dans le même groupe que le propriétaire du répertoire.

    On doit pouvoir regarder dans la configuration d'apache pour lui donner un peu plus de droits qu'il n'en a ... au prix d'un peu moins de sécurité ...

    Tout ceci est un paquet d'idée générales ... je ne connais pas suffisamment le fonctionnement détaillée d'apache pour garantir que toutes fonctionneront.

    Il y a cependant, ici, d'autres contributeurs qui sont bien plus affutés sur les problèmes de droits dans les systèmes de fichiers pour les processus lancés par une interface web.

    Citation Envoyé par rafawel
    désolé pour les imprecisions
    Y a pas de mal, mais une question imprécise amène des réponses imprécises, qui ne satisfont généralement personne

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/04/2011, 09h40
  2. modifier les droits d'un dossier sous Windows Vista
    Par ririrourou dans le forum Windows Vista
    Réponses: 0
    Dernier message: 05/02/2010, 15h32
  3. Impossible modifier droits NT sur un dossier
    Par kikica dans le forum Windows XP
    Réponses: 1
    Dernier message: 17/12/2007, 22h02
  4. Modifier couleurs arrière-plan dossiers
    Par marcus333 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 16/09/2005, 13h19
  5. Gérer les droits d'un dossier/RPC indisponible
    Par xant dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 22/08/2005, 13h47

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