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

Python Discussion :

problème permission quand os.chmod()


Sujet :

Python

Vue hybride

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut problème permission quand os.chmod()
    Bonjour,

    Dans un script python, je crée un dossier avec os.mkdir(). Le dossier parent a pour groupe mon_nom:mon_nom mais le dossier crée dedans est en www-data:www-data.

    Donc du coup j'ai plu les droit sur le nouveau dossier en faisant os.chown().

    Comment faire ?

    Est ce possible que le dossier créé prend les même caractéristiques que le dossier parent ?

    Alaninho

  2. #2
    Membre Expert Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Par défaut
    Bonjour

    os.chown, en version (python) 2 ou 3, n'est disponible que sous Unix si j'en crois la doc. Je me place donc dans ce contexte.

    Est-ce que le comportement que tu décris dans ton post, dans les mêmes conditions (et là, il ne s'agit pas de faire dans "l'à peu près" !), se répète "hors python", sous le shell ?

    J'ai du mal à croire que python vienne, sauf si on l'y incite, à mettre son grain de sel dans le comportement "normal" du système.
    Un "os.mkdir()" Python c'est, sous Unix, in fine, un appel système à mkdir qui indique (man 2 mkdir) :

    The directory's owner ID is set to the process's effective user ID. The directory's group ID is set to
    that of the parent directory in which it is created.
    Ce qui se vérifie sur mon système MacOSX :

    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
    >>> import os
    >>> os.getuid()  # mon id utilisateur
    11946
    >>> os.getgid() # mon group id
    10961
    >>> os.chdir("/tmp")
    >>> os.stat('.').st_uid   # id du propriétaire de /tmp
    0
    >>> os.stat('.').st_gid   # id du groupe propriétaire de "/tmp"
    0
    >>> os.mkdir('tempo')
    >>> os.stat('tempo').st_uid
    11946
    >>> os.stat('tempo').st_gid
    0
    Le répertoire créé m'appartient (même user id), le groupe propriétaire est celui du répertoire parent.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je confirme que lorsqu'un utilisateur crée un répertoire sur sa machine, celui-ci lui appartient.

    Mais l'utilisateur www-data appartient, me semble-t-il, à vsFTP: il s'agirait dans ce cas de la création d'un répertoire à distance par FTP sur un serveur. Est-ce le cas?

    Pour savoir s'il y a une solution à ton problème, il faut en dire un peu plus sur ton contexte de travail: la gestion des droits sur un serveur comporte des particularités, et même quelques curiosités...

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Je confirme aussi que tout fichier (donc à fortiori tout dossier puisqu'un dossier n'est qu'un fichier particulier) créé a les mêmes uid/gid que les euid/egid du processus qui crée le fichier (et sauf si le processus a un setuid/setgid, son euid/egid sont égaux au uid/gid de l'utilisateur qui a lancé le processus).

    Sauf dans un certain cas très particuliers: il faut être sur un vieil os avant fermeture du chown (car celui-ci a été fermé dans les années 90 pour des raisons de sécurité), et dans un dossier en mode 4777 (drwsrwxrwx). Dans ce cas, ayant le droit d'écrire dans le dossier tu peux y créer un fichier mais le dossier ayant un setuid, le fichier créé aura le même uid que l'uid du dossier. Cette remarque s'applique aussi au gid si le dossier a le setgid positionné avec le mode 2777 (drwxrwsrwx) et on pourra alors avoir modification du uid+gid si les deux set sont positionnés avec le mode 6777 (drwsrwsrwx).
    Mais ça c'était valable avant fermeture du chown (fermé pour cause de non répudiation => pouvoir prouver qu'un fichier a bien été créé par un user précis). Donc c'était pour la petite histoire. A mon avis tu devrais plutôt t'intéresser à la remarque de tyrtamos.

    Citation Envoyé par alaninho Voir le message
    Donc du coup j'ai plu les droit sur le nouveau dossier en faisant os.chown().
    Comme je l'ai dit, le chown a été fermé dans les années 90 donc même si ton fichier/dossier t'appartient, tu ne peux pas le donner à quelqu'un d'autre (lui faire porter le chapeau en cas de fraude par exemple). Donc quoi qu'il arrive, t'auras jamais droit au os.chown().

    Citation Envoyé par alaninho Voir le message
    Est ce possible que le dossier créé prenne les même caractéristiques que le dossier parent ?
    C'est faisable en partie. Le chgrp n'ayant pas été fermé, tu peux alors créer un dossier "toto" de groupe "xyz" et lui positionner le setgid (chmod g+s toto). A ce moment là, tout fichier/dossier qui sera créé dans ce dossier "toto" sera de groupe "xyz". Mais (sauf dans certains cas de setuid), le uid reste et restera associé au créateur du fichier.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 299
    Par défaut
    Merci de vos réponse, en effet, les dossiers sont créés par un serveur distant. En faite, c'est un programme se situant sur un serveur et les personnes qui l'utilisent sont externes.

    Je vais prendre la remarque de tyrtamos en compte et regarder un peu par moi-même.

    Encore Merci

Discussions similaires

  1. Problème macro quand j'envoi fichier à étranger
    Par fabiencal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2009, 14h26
  2. [Runtime] Problème pour exécuter un chmod en java
    Par tonton_charlie dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 27/07/2009, 08h35
  3. [MySQL] Problème mysql_result quand pas d'enregistrement
    Par sandddy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/11/2007, 11h09
  4. [MySQL] Tout en UTF8 mais problème accentuations quand même
    Par speedev dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 11/04/2007, 22h43
  5. Problème sessions quand je redirige par IE
    Par Nibor dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2007, 22h18

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