Pages : 1
#1 Le 07/02/2024, à 16:47
- Franck-86180
droit des fichiers
bonjour,
Je pose certainement un question bête mais je sèche.
Je me lance dans le python. Que je ne connais pas. Mais il y a un début à tout!
mon script est le suivant:
import os
import datetime
# Spécifiez le chemin du répertoire de la carte SD
chemin_carte_sd = '/home/franck/sdcard'
# Vérifiez si le chemin de la carte SD existe
if os.path.exists(chemin_carte_sd):
print("La carte SD est bien installée.")
with open('/home/franck/sdcard/mqtt.txt','a') as f:
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
f.write(f'{current_time}\n')
else:
print("La carte SD n'est pas installée ou le chemin spécifié est incorrect.")
et quand j'execute ce code j'obtient ceci:
franck@mosquitto:~ $ python3 ./test_sd.py
La carte SD est bien installée.
Traceback (most recent call last):
File "/home/franck/./test_sd.py", line 10, in <module>
with open('/home/franck/sdcard/mqtt.txt','a') as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 13] Permission denied: '/home/franck/sdcard/mqtt.txt'
franck@mosquitto:~ $
le répertoire sdcard a été créé comme suit:
franck@mosquitto:~ $ cd /dev
franck@mosquitto:/dev $ dmesg | grep mmcblk0
[ 307.556202] mmcblk0: mmc0:bfde SD01G 922 MiB
[ 307.558125] mmcblk0: p1
[ 307.558297] mmcblk0: mmc0:bfde SD01G 922 MiB
franck@mosquitto:/dev $ ls /dev/mmcblk0
/dev/mmcblk0
franck@mosquitto:~ $ pwd
/home/franck
franck@mosquitto:~ $
franck@mosquitto:~ $ mkdir sdcard
franck@mosquitto:~ $ sudo mount -t vfat /dev/mmcblk0p1 /home/franck/sdcard
franck@mosquitto:~ $ cd sdcard/
franck@mosquitto:~/sdcard $ ls -al
total 5
drwxr-xr-x 3 root root 512 Jan 1 1970 .
drwx------ 4 franck franck 4096 Feb 7 15:41 ..
drwxr-xr-x 2 root root 512 Feb 7 2024 'System Volume Information'
franck@mosquitto:~/sdcard $
Et il m'est impossible de faire un "chown" sur le répertoire sdcard!
J'ai créé à la main un fichier "mqtt.tx"t dans le répertoire "sdcard"
franck@mosquitto:~ $ cd sdcard/
franck@mosquitto:~/sdcard $ touch mqtt.txt
franck@mosquitto:~/sdcard $ ls -al
total 5
drwxr-xr-x 3 root root 512 Jan 1 1970 .
drwx------ 4 franck franck 4096 Feb 7 16:36 ..
-rwxr-xr-x 1 root root 0 Feb 7 16:24 mqtt.txt
drwxr-xr-x 2 root root 512 Feb 7 16:28 'System Volume Information'
franck@mosquitto:~/sdcard $
Impossible de lui modifier le propriétaire...
Ce doit être un problème de droits mais...
Je ne vois pas ou aller pour palier ce problème...
Quelqu'un a-t-il une idée
Hors ligne
#2 Le 07/02/2024, à 17:30
- Astrolivier
Re : droit des fichiers
salut,
ton dossier est root, et ton fichier aussi
le plus simple
sudo chown -R franck:franck /home/franck/sdcard
ça te mettra ton dossier et les deux fichiers dedans avec franck comme propriétaire (utilisateur et groupe)
donne aussi
echo $USER
parce que normalement tes commandes auraient du te créer te les créer sous franck et non root, comme tu n'as pas fait ça en sudo
edit
tu as monté ton system de fichier windows. démonte le avant de faire quoi que ce soit sur les droits !!!!
Dernière modification par Astrolivier (Le 07/02/2024, à 17:38)
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#3 Le 07/02/2024, à 20:28
- Franck-86180
Re : droit des fichiers
voila le résultat, pas très probant...
franck@mosquitto:~/sdcard $ cd ..
franck@mosquitto:~ $ sudo umount /dev/mmcblk0p1
franck@mosquitto:~ $ sudo chown -R franck:franck /home/franck/sdcard
franck@mosquitto:~ $ ls -al
drwxr-xr-x 2 franck franck 4096 Feb 7 15:41 sdcard
franck@mosquitto:~ $ sudo mount -t vfat /dev/mmcblk0p1 /home/franck/sdcard
franck@mosquitto:~ $ ls -al
drwxr-xr-x 3 root root 512 Jan 1 1970 sdcard
franck@mosquitto:~ $ sudo umount /dev/mmcblk0p1
franck@mosquitto:~ $ chown -R franck:franck /home/franck/sdcard
drwxr-xr-x 2 franck franck 4096 Feb 7 15:41 sdcard
franck@mosquitto:~ $ mount -t vfat /dev/mmcblk0p1 /home/franck/sdcard
mount: /home/franck/sdcard: must be superuser to use mount.
dmesg(1) may have more information after failed mount system call.
franck@mosquitto:~ $
franck@mosquitto:~ $ ls -al
drwxr-xr-x 3 root root 512 Jan 1 1970 sdcard
-rwxr-xr-x 1 franck franck 512 Feb 7 16:13 test_sd.py
franck@mosquitto:~ $
Je peux changer de propriétaire/groupe quand le système de fichier n'est pas monté mais quand je le monte,
le répertoire repasse root:root
Je comprends pas!
Hors ligne
#4 Le 07/02/2024, à 20:52
- ylag
Re : droit des fichiers
Bonsoir,
Je peux changer de propriétaire/groupe quand le système de fichier n'est pas monté mais quand je le monte, le répertoire repasse root:root
Par défaut, Linux ne peut gérer les droits de façon conventionnelle pour un système de fichier vfat.
Sauf erreur de ma part, il faut probablement passer les options de montage qui marchent bien avec la commande mount pour ce type de système de fichier.
Voir cette page de la doc pour plus d'infos : https://doc.ubuntu-fr.org/mount_fstab
A+
Dernière modification par ylag (Le 07/02/2024, à 21:21)
Hors ligne
#5 Le 07/02/2024, à 21:05
- Franck-86180
Re : droit des fichiers
donc, je dois formater la carte SD en EXT4 par exemple....
Mais dans ce cas là, je ne pourrai pas la lire sur windows, non?
De plus, je ne sais pas formater une carte SD... pas malin
Dernière modification par Franck-86180 (Le 07/02/2024, à 21:24)
Hors ligne
#6 Le 07/02/2024, à 21:19
- ylag
Re : droit des fichiers
Bonsoir,
Il faudrait plutôt passer les bons paramètres au montage du système de fichier ; voir le paragraphe 2.2.2 Système de fichier non linux et suivants de la doc citée à mon message précédent.
A+
Dernière modification par ylag (Le 07/02/2024, à 21:29)
Hors ligne
#7 Le 08/02/2024, à 12:54
- ylag
Re : droit des fichiers
Bonjour,
Pour un périphérique de stockage externe, tel qu'une carte SD devant être utilisée sur Linux et Windows, on pourrait considérer l'utilisation du système de fichier exFAT ?
https://doc.ubuntu-fr.org/exfat
A+
Hors ligne
#8 Le 08/02/2024, à 13:34
- krodelabestiole
Re : droit des fichiers
à ma connaissance, linux ne sait pas gérer individuellement les permissions des fichiers et répertoires contenus sur les systèmes de fichiers microsoft : que ce soit fat, fat32, ntfs ou exfat.
on ne peut que définir les permissions pour l'ensemble de la partition via les options de montage.
microsoft à conçu exFAT spécifiquement pour les supports flash (sdcard, clé usb ...) mais ça ne change rien à ce problème.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
En ligne
#9 Le 08/02/2024, à 14:31
- Astrolivier
Re : droit des fichiers
pour info, une clef usb fat32 montée automatiquement par udev sur kubuntu donne ça (mount)
/dev/sda1 on /media/poney2204/3195-82B1 type vfat (rw,nosuid,nodev,relatime,uid=1000,gid=1000,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
et on peut écrire ce qu'on veut dedans (rw)
Dernière modification par Astrolivier (Le 08/02/2024, à 14:32)
S'il faut absolument faire des sacrifices pour assurer le progrès de l'humanité, ne serait-il pas indispensable de s'en tenir au principe selon lequel c'est à ceux dont on exige le sacrifice que la décision doit revenir en dernier ressort ? (howard zinn)
Hors ligne
#10 Le 08/02/2024, à 17:28
- ylag
Re : droit des fichiers
Bonjour,
On me corrigera si j'ai tort, mais si le système de fichier vfat en question se trouve bien sur le périphérique /dev/mmcblk0p1, la commande suivante, passée sans sudo, devrait le monter en lecture/écriture pour l'utilisateur courant, franck, dans /media/franck /media/franck/<label_ou_UUID_du_système_de_fichier> :
udisksctl mount -b /dev/mmcblk0p1
A+
Dernière modification par ylag (Le 09/02/2024, à 12:43)
Hors ligne
#11 Le 08/02/2024, à 20:20
- iznobe
Re : droit des fichiers
Bonjour ,
Je peux changer de propriétaire/groupe quand le système de fichier n'est pas monté mais quand je le monte,
le répertoire repasse root:rootJe comprends pas!
sudo chown -R franck:franck /home/franck/sdcard
il ne faut jamais changer les permissions du point de montage .
c ' est un mécanisme particulier , soit c' est root avec des options précises, soit c ' est udisksctl qui s' en occupe et alors l' utilisateur a les permissions , mais , en supposant que le système de fichiers gère les droits ( ce qui n' est pas le cas ici ) , ce sont les fichiers ou dossiers " contenus " dans le point de montage auquel on change les permissions .
Le pont de montage ne devrait jamais être modifié directement , on utilise pour cela les options désirées et appropriées ( en fonction du format utilisé ) pour obtenir le résultat attendu ainsi que la commande qui va bien ( soit mount , soit udisksctl ) .
Comme analogie ( peut être pas idéal mais bon ... ) , si dans un garage mécanique qui appartient à paul , pierre vends sa voiture à jacques , le garage , dans tous les cas continue à appartenir Paul . seule la voiture change de propriétaire .
Dernière modification par iznobe (Le 08/02/2024, à 20:25)
retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .
Hors ligne
#12 Le 09/02/2024, à 03:55
- Coeur Noir
Re : droit des fichiers
Bref, ce qui manque ici :
sudo mount -t vfat /dev/mmcblk0p1 /home/franck/sdcard
ce sont des options de mount pour lui dire d'attribuer le système de fichiers monté dans /home/franck/sdcard à, je suppose, l'utilisateur franck.
Ça pourrait ressembler à :
mount -t vfat -o rw,umask=007,uid=franck,gid=franck /dev/mmcblk0p1 /home/franck/sdcard
Si à chaque tentative d'ouvrir un fichier contenu dans cette clé, le système te demande si tu veux l'afficher ou l'exécuter alors il faudra affiner,
probablement avec des options de ce genre :
dmask=007,fmask=117
Pour connaître les correspondances entre nom d'utilisateur ↔ uid et noms de groupe ↔ gid :
grep -E :[0-9]{4}: /etc/{passwd,group}
Le plus simple serait de ne pas monter « manuellement » cette sdcard mais de laisser ton système s'en occuper automatiquement lors de l'insertion :
la carte sera alors montée dans /media/$USER/label_ou_uuid_sdcard
Dans ton script, tu testes alors si uuid_ou_label_sdcard existe bien dans /media/$USER ( en espérant qu'il y a une équivalence pour la variable $USER )
et ce sera opportun de donner une étiquette à la partition de cette sdcard.
Autres lectures utiles : droits et permissions.
Dernière modification par Coeur Noir (Le 09/02/2024, à 04:05)
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne
#13 Le 09/02/2024, à 05:17
- jplemoine
Re : droit des fichiers
Dans ton script, tu testes alors si uuid_ou_label_sdcard existe bien dans /media/$USER ( en espérant qu'il y a une équivalence pour la variable $USER )
et ce sera opportun de donner une étiquette à la partition de cette sdcard.
Une solution : mettre un fichier témoin (*) sur la carte et tester la présence du dit fichier (existence du fichier = montage ok)
(*) avec un nom suffisamment bizarre pour qu'il n’existe pas dans les données classique et lui enlever les droits w afin de ne pas le supprimer par erreur.
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Déconnecté jusqu’à nouvel ordre
Hors ligne
#14 Le 10/02/2024, à 17:54
- Franck-86180
Re : droit des fichiers
Merci à cœur noir.
Le mount que tu as donné fonctionne très bien.
sudo mount -t vfat -o rw,umask=007,uid=franck,gid=franck /dev/mmcblk0p1 /home/franck/sdcard
Avec ce "mount", le répertoire ne change pas de propriétaire.
Et je peux écrire, lire, modifier, supprimer un fichier, sur la machine ou sur un PC windows; j'en suis bien propriétaire.
Un grand merci, je n'aurai pas trouvé tout seul, ça c'est sur!
Voila ce que donne le "grep"
franck@mosquitto:~/sdcard $ grep -E :[0-9]{4}: /etc/{passwd,group}
/etc/passwd:franck:x:1000:1000:,,,:/home/franck:/bin/bash
/etc/group:franck:x:1000:
franck@mosquitto:~/sdcard $
Dernière modification par Franck-86180 (Le 10/02/2024, à 17:55)
Hors ligne
Pages : 1