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

Java Discussion :

Droit sur un fichier copier sous linux.


Sujet :

Java

  1. #1
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut Droit sur un fichier copier sous linux.
    Bonjour, je ne sais pas si je suis dans la bonne section pour ma question, si ce n'est pas le cas je m'en excuse.

    Dans mon application j'ai une fonction permettant de copier des fichiers depuis mon poste linux vers une clé USB.

    L'application fonctionne correctement cependant lors de la copie je perds les droits attribués aux fichiers exemple :

    * Fichier du poste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    posteTest:/usr/local/lib/prog$ ls -l script1.sh
    -rw-rw-rw- 1 jose jose 1123 2010-02-16 17:22 script1.sh
    * Fichier copier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    posteTest:/media/KINGSTON/Archive/prog$ ls -l script1.sh
    -rwx------ 1 jose root 1123 2010-03-08 15:02 script1.sh
    Comme constaté l'utilisateur reste le même mais le groupe passe en root, n'ayant pas les accès root mon fichier devient bloqué pour mon compte.

    De plus les droits passent de -rw-rw-rw- à -rwx------

    Est il possible de spécifier "des droits" ou utilisateur / groupe ?


    Pour la copie j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ... FileInputStream fis = new FileInputStream(source);
     
    FileOutputStream fos = new FileOutputStream(destination);
     
    FileChannel channelSrc   = fis.getChannel();
     
    FileChannel channelDest = fos.getChannel();
     
    channelSrc.transferTo(0, channelSrc.size() , channelDest);
     
    fis.close();
     
    fos.close();...

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2010
    Messages : 42
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Toute opération sur un fichier est réalisé au final par le système d'exploitation. Pour le changement de droit et du possesseur, c'est l'OS qui au final décide de cela.
    Pour changer les droits, je ne vois pas de classe Java permettant de manipuler cela. De même pour le possesseur. Cependant, une solution serait de faire réaliser une commande système par la machine virtuel sur le fichier du genre chmod et chown. Malheureusement, cette solution perd au niveau de la portabilité.
    Concernant le possesseur, je pense que cela va être influencé par le compte qui lance ton appli java, l'appli java héritant des paramètres du compte. Par exemple, si l'appli java est lancé sous le compte root, je pense que l'appli java va récupérer une partie de l'environnement de root moins les restrictions imposées par la machine virtuel.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    Juste une interrogation : comment est montée ta clef USB ? C'est quel système de fichiers ?

    Pour la gestion des droits, regarde du côté de la classe File notamment avec les méthodes setReadable, setWritable, etc...

    Suivant le système de fichier de ta clef, tu ne pourras pas tout bien gérer (notamment si c'est du FAT ou du NTFS) car les permissions ne sont pas codées avec le fichier et c'est le fstab qui définit un masque utilisateur/permissions, donc tu ne pourras pas faire grand chose.

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2010
    Messages : 42
    Points : 111
    Points
    111
    Par défaut
    Autant pour moi, j'étais pas bien réveillé ce matin. J'avais lu la javadoc 1.4. au lieu de la 1.6.

  5. #5
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Merci à vous pour vos réponses, concernant ma clé le système de fichiers est du FAT32.

    Il est vrai que je n'avais pas pensé aux setReadable, setWritable, setExecutable. je vais essayer pour voir ce que ca donne et je vous tiens informé.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jose.N70 Voir le message
    Merci à vous pour vos réponses, concernant ma clé le système de fichiers est du FAT32.

    Il est vrai que je n'avais pas pensé aux setReadable, setWritable, setExecutable. je vais essayer pour voir ce que ca donne et je vous tiens informé.
    Comme dit ci dessus, tu ne pourras pas faire grand chose... Les permissions et l'utilisateur ne sont pas stockés dans le système de fichier. Pour contourner ça, lors du montage de ta clef, un propriétaire, un groupe et un masque de permission sont donnés pour le périphérique par le système, et tu auras beau appeler un setToto sur le fichier comme le flag toto existe pas, ça ne changera rien. Tu peux d'ailleurs tester en console en faisant un chmod, ça ne devrait rien changer non plus.
    En général pour un media amovible en écriture le masque suivant est donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    utilisateur/root rwx------
    // ou bien
    utilisateur/utilisateur rwx------
    pour tous les fichiers sur la partition. Là quel que soit le langage tu ne pourras pas le changer sans changer les options de montage de tes périphériques (fstab pour des disques durs en général, pour les media amovibles j'ai oublié ^^)
    Si tu veux garder tes permissions tu n'auras pas le choix : formatter ta clef dans un système de fichier supportant les permissions tel que ext2, ext3 ou encore reiserfs (les plus courant on va dire). Mais là il faudra trouver des drivers spéciaux si tu veux utiliser la clef sous windows.

    EDIT :
    je viens de retrouver comment faire (il me semble)
    Dans ton fichier fstab essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LABEL=KINGSTON /media/KINGSTON vfat noauto,users,dmask=777,fmask=666 0 0
    ça devrait conner rwx sur les répertoires et rw à tout le monde sur les fichiers.

    PS : un script sh sans être exécutables??? c'est dommage quand même de devoir écrire sh avant le script ^^
    Dernière modification par Invité ; 09/03/2010 à 14h24.

  7. #7
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Merci pour ces renseignements George7.

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

Discussions similaires

  1. Macro copier coller d'une plage sur nouveau fichier excel sous condition
    Par lapagaille dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/02/2014, 13h11
  2. Fichier visible sous linux et non sur windows disque dur
    Par Stepsbysteps dans le forum Linux
    Réponses: 1
    Dernier message: 20/01/2013, 12h28
  3. Copier un fichier partager sous linux
    Par islyoung2 dans le forum Administration système
    Réponses: 3
    Dernier message: 27/12/2009, 10h03
  4. [Système] Droits sur un fichier
    Par maxvador dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 16/07/2004, 17h06
  5. Réponses: 5
    Dernier message: 06/03/2003, 13h27

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