#1 Le 08/11/2020, à 20:51
- jokerson
aide à débutant: mettre un fichier lisible sur une autre session
Bonjour,
Je suis débutant sous linux, et n'ai pas beaucoup de compétences en la matière. Je ne sais meme pas si j'ai posté au bonne endroit, si ce n'est pas le cas, désolé. ( je suis capable d'ouvrir une terminal et de taper les codes, mais j'ai besoin de recopier exactement)
Je chercher à rendre visible, sur un même ordinateur ( Linux ubuntu 20.04 ) un dossier écrit dans une session (elle s'appelle "blandine" la session ) sur une autre session ( qui s'appelle "enfants" ). Ca serait des dossiers de "devoirs".
Je voudrait garder la main en écriture sur ce dossier, mais que mes enfants, dans la session "enfant" voient ce dossier "devoir" visible mais ne puissent pas le supprimer, ni le changer ( par contre qu'ils puissent l'ouvrir et le lire librement sans mon intervention )
Quelqu'un peut il m'aider ? J'imagine que ca ne doit pas être trop compliqué. Merci d'avance !
Dernière modification par jokerson (Le 08/11/2020, à 20:58)
Hors ligne
#2 Le 08/11/2020, à 21:47
- Pam547
Re : aide à débutant: mettre un fichier lisible sur une autre session
Bonjour,
Comment partager un dossiers "devoir" entre plusieurs sessions ?
Session Blandine avec tout les droits sur le dossier "devoir".
Session Enfants avec des droits de lecture uniquement.
Je commencerais par créer le dossier dans la Session Enfant qu'il leur faudra ouvrir pour voir "les fichiers devoirs".
mkdir /home/enfants/Devoirs
Ensuite faire un lien du dossier "devoir" vers les documents de la Session Enfants.
ln /home/blandine/dossier/en/question /home/enfants/Devoirs
Puis finir en gérant les droits sur /home/blandine/dossier/en/question
chmod -R 744 /home/blandine/dossier/en/question
Contrôler qu'en théorie tout'aille comme il faut avec :
ls -al /home/enfants/Devoirs
---------------------------------------------------------------------
En ce qui me concerne, ce serait dans le style.
Dernière modification par Pam547 (Le 08/11/2020, à 21:52)
Art.9.(code civil) Chacun a droit au respect de sa vie privée.
Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.
Hors ligne
#3 Le 09/11/2020, à 00:43
- alh54
Re : aide à débutant: mettre un fichier lisible sur une autre session
Ce n'est pas suffisant, il faut en plus ajouter enfants au groupe blandine.
sudo gpasswd -a enfants blandine
On a réglé les droits pour les fichiers existants mais si blandine crée de nouveaux fichiers, comme sous Ubuntu l' umask est réglé sur 0002 ils auront les droits 664, donc accessibles en écriture pour enfants.
Je pense qu'il faut aussi modifier l'umask pour blandine (0022) dans ~/.profile.
Hors ligne
#4 Le 09/11/2020, à 02:56
- Coeur Noir
Re : aide à débutant: mettre un fichier lisible sur une autre session
L'umask est ( en théorie ) réglé au niveau système, dans le fichier /etc/login.defs : ici ça indique au système quel umask donner à chaque nouvel utilisateur créé.
Y'a plein d'autres trucs dans ce fichier, comme le fait que pour tout utilisateur créé, le système lui associe un groupe de même nom.
Par défaut sous Ubuntu, cet umask est à 022 → utilisateur a lecture+écriture+exécution, groupe et autres ont lecture+exécution.
Ça veut dire que les utilisateurs déjà créés ( blandine et enfants ) ont cet umask.
En théorie car Gnome depuis des années est complètement à la ramasse vis à vis de ce mécanisme et ne répercute pas cette valeur umask correctement dans « ses » logiciels.
Du coup il faut aussi reporter l'umask souhaité dans ~/.profile afin que des logiciels comme gedit ou gnome-terminal ( et d'autres ) le respectent. À priori pas le souci avec la valeur par défaut.
Pour ajouter un utilisateur à un groupe ( les 2 doivent déjà exister ) il y a aussi :
sudo adduser utilisateur groupe
Mais.
C'est dans « l'autre sens » qu'il faut le faire, le dossier /home/enfants/Devoirs est créé dans la session enfants donc enfants a automatiquement les droits rwx là.
C'est blandine qui ne pourrait qu'y lire. Sauf à ajouter blandine au groupe enfant afin qu'elle ait le droit d'écrire là bas ( si on ajoute au groupe, sur ce dossier, le droit écriture ).
Mais puisque là enfants peut écrire, alors enfants peut …effacer. Bof.
C'est pas dans /home/enfants qu'il faut créer un tel dossier devoirs mais bien chez blandine et dans le dossier /home/enfant mettre un lien vers lui : les enfants pourront alors lire depuis leur session ce qu'il y a dans ce dossier mais pas y écrire, seule blandine le pourra. Pas besoin de jouer avec umask et autres permissions, les valeurs par défaut suffisent.
Bref.
Depuis la session blandine créer le dossier :
mkdir /home/blandine/Devoirs
puis le lien ( symbolique ) :
sudo ln -s /home/blandine/Devoirs /home/enfants/Devoirs
sudo car blandine n'a pas le droit d'écrire chez enfants.
Ou alors passer sous la session enfants et
ln -s /home/blandine/Devoirs /home/enfants/Devoirs
Avec la commande ln le premier chemin est celui vers la ressource cible [ /home/blandine/Devoirs ], le deuxième chemin désigne le lien [ /home/enfants/Devoirs ].
Un lien est « transparent » il reporte les droits et permissions de sa cible.
Un lien symbolique a le comportement suivant :
⋅ si par accident, enfants efface le lien, ça n'efface pas la cible /home/blandine/Devoirs.
⋅ si blandine efface le dossier Devoirs alors le lien apparaîtra « cassé » côté enfants. Il suffit alors que blandine (re) crée un dossier Devoirs pour que le lien fonctionne à nouveau
Un lien direct a un autre comportement en cas d'effacement de la cible ( en gros : tant qu'il existe un lien direct vers une ressource cible, cette ressource reste sur le disque ).
Guère plus compliqué, faire en sorte que blandine ait partout chez enfants le droit d'écriture. Intéressée ?
Pour empêcher par enfants l'effacement du lien c'est un peu plus pointu. Mais faisable. ( le bit -t sur /home/enfants ou un montage --bind entre 2 dossiers plutôt qu'un lien symbolique ). On s'arrête là où on continue ?
Dernière modification par Coeur Noir (Le 09/11/2020, à 03:30)
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne
#5 Le 09/11/2020, à 03:25
- alh54
Re : aide à débutant: mettre un fichier lisible sur une autre session
Par défaut sous Ubuntu, cet umask est à 022 → utilisateur a lecture+écriture+exécution, groupe et autres ont lecture+exécution.
Ça veut dire que les utilisateurs déjà créés ( blandine et enfants ) ont cet umask.
Tu as bien fait de dire que c'est en théorie,j'ai testé avant de parler de la modification de umask.
moufida@moufida-pc:~$ umask -p
umask 0002
moufida@moufida-pc:~$ touch test
moufida@moufida-pc:~$ ls -l test
-rw-rw-r-- 1 moufida moufida 0 nov. 9 02:07 test
Hors ligne
#6 Le 09/11/2020, à 03:48
- Coeur Noir
Re : aide à débutant: mettre un fichier lisible sur une autre session
Oui, maintenant continue tes essais en créant des fichiers avec, je sais pas moi, gimp, libre-office, et d'autres… avec eux ça devrait être conforme à 022.
# UMASK is the default umask value for pam_umask and is used by
# useradd and newusers to set the mode of the new home directories.
# 022 is the "historical" value in Debian for UMASK
# 027, or even 077, could be considered better for privacy
# There is no One True Answer here : each sysadmin must make up his/her
# mind.
Le terminal gnome ( et d'autres appli's ) ne prennent pas l'umask global défini dans login.defs, c'est un bug qui traîne depuis des lustres surtout chez gnome ( en rapport avec pam et systemd ).
Ça fait des années que j'ai des postes en multi-utilisateurs, avec des partages de dossiers entre eux ou entre groupes, merci Gnome pour ce casse-tête que je n'ai découvert qu'après Unity ( non impacté à l'époque par ce bug ).
Voir https://bugs.launchpad.net/ubuntu/+sour … ug/1685754 ou https://forum.ubuntu-fr.org/viewtopic.p … #p21823639. C'est censé avoir été corrigé dans 20.04 en juillet dernier mais le bug semble réapparaître sous 20.10…
Dernière modification par Coeur Noir (Le 09/11/2020, à 05:28)
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne
#7 Le 09/11/2020, à 04:52
- Coeur Noir
Re : aide à débutant: mettre un fichier lisible sur une autre session
@jokerson À la réflexion, ce sera peut-être plus simple et efficace de faire sans lien mais avec un montage bind entre deux dossiers.
Dans ce cas enfants ne pourra pas effacer ce « montage ». Et comme avec les liens, ce type de montage reporte les droits et permissions de sa cible.
Donc dans ce cas la manip' c'est de créer dans la session enfants un dossier vide Devoirs et dans la session blandine un dossier Devoirs qui celui-là peut déjà contenir des fichiers et dossiers.
Ensuite on « monte » le dossier /home/blandine/Devoirs dans le dossier /home/enfants/Devoirs en ajoutant ces 2 lignes
# dossier Devoirs, de blandine vers enfants
/home/blandine/Devoirs /home/enfants/Devoirs none bind
à la fin du fichier /etc/fstab en utilisant l'éditeur de texte Gedit en mode super pouvoir.
Depuis un terminal
sudo mv /etc/fstab /etc/fstab_sauv
histoire de garder une copie de sauvegarde de ton actuel fstab, au cas où. Puis
gedit admin:///etc/fstab
qui va ouvrir Gedit et demandera ton mot de passe aux moments opportuns pour afficher ( ou enregistrer ) fstab.
Ajout des 2 lignes à la fin du fstab, enregistrer, quitter Gedit, le terminal « te rend la main ».
Redémarrer le pc. Vérifier que ça marche comme tu veux :
⋅ depuis sa session blandine crée un fichier dans ~/Devoirs. Ce fichier lui appartient.
⋅ dans la session enfants, ils peuvent lire ce fichier, mais pas le modifier, car c'est blandine l'utilisateur propriétaire, pas enfants.
⋅ Ils ne peuvent pas écrire dans ce dossier.
⋅ là où j'ai un doute : enfants ne pourra pas effacer le dossier Devoirs mais il pourra peut-être effacer ce qu'il y a dedans, même si ça lui appartient pas. À vérifier.
Pour ces 2 derniers points : on peut faire en sorte que enfants puisse écrire dans ce dossier, et faire en sorte que seul l'utilisateur propriétaire d'un fichier puisse l'effacer. À voir.
Du coup ça fait 2 possibilités pour arriver peu ou prou aux mêmes fins ( lien symbolique ou montage bind ). Au choix !
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne
#8 Le 09/11/2020, à 13:19
- Pam547
Re : aide à débutant: mettre un fichier lisible sur une autre session
Re-
Oups, c'est effectivement plus simple avec un montage fstab.
J'associe la commande mount à des systèmes de fichier étranger à la machine de base. (Partitions de disque différentes à celle d'origine.)
J'oubliais que les enfants sont des individus à dissocier des parents.
J'étais plus dans une construction "famille" avec un même fichier utilisé par plusieurs utilisateurs.
----------------------------------------------------------
Pour aller plus loin :
fstab --> mount > possibilité d'utiliser l'option read-only (ro) ???
----------------------------------------------------------
@Cœur Noir
Pourquoi faire utiliser gedit plutôt qu'un echo "......" >> /etc/fstab ?
Art.9.(code civil) Chacun a droit au respect de sa vie privée.
Art.12.(déclaration universelle des DDH) Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes.
Hors ligne
#9 Le 09/11/2020, à 17:57
- Coeur Noir
Re : aide à débutant: mettre un fichier lisible sur une autre session
@Pam, l'option ro sur le bind est probablement faisable, je n'ai pas testé. Bien vu !
Gedit plutôt que echo ou sed ou autre commande, pour rester « visuel » et montrer comment on lance ( correctement ) cet éditeur de texte en mode super-utilisateur.
Dernière modification par Coeur Noir (Le 09/11/2020, à 18:58)
Débuter ⋅ Doc ⋅ Bien rédiger ⋅ Retour commande ⋅ Insérer image | illustrations & captures d'écran < ⋅ >
Hors ligne