Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/07/2024, à 00:38

cristobal78

(résolu) Que faire pour que user2 puisse exécuter un script de user1

Bonjour à tous les amis du forum!

J'ai besoin d'aide pour faire qq-chose d'hyper simple mais je merdoie dans les groupes, les permissions, etc ...

Situation.
Sur ce pc il y a 2 utilisateurs, appelons les "bob" et "alice"
bob a les droits sudo mais alice ne les a pas.
bob a un répertoire nommé "scripts" contenant des scripts : /home/bob/scripts/

Dans ce répertoire il y a un script appelé "mybestscript".

Je voudrais qu' alice, depuis son terminal, puisse exécuter "mybestscript"

Dernière modification par cristobal78 (Le 15/07/2024, à 23:55)


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#2 Le 14/07/2024, à 05:35

jplemoine

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

cristobal78 a écrit :

Je voudrais qu' alice, depuis son terminal, puisse exécuter "mybestscript"

Elle ne peut pas puisque justement les permission de /home/bob sont faites pour que seulemnt bob puisse y acceder
Je te déconseille fortement de changer ces permissions.
La solution propre est de

  • créer un groupe (par exemple nous)

  • d'y affecter bob et alice

  • de créer un répertoire scripts dans /usr/bin (par exemple) avec comme propriétaire bob:nous et comme permission (rwxr-x---) (750)

  • d'y mettre mybestscript avec comme propriétaire bob:nous et comme permission rwxr-x--- (750)

bob aura les droits d'écriture et d'execution : donc ce sera facile pour lui de modifier le script (pas besoin de sudo)
alice aura le droit de voir le contenu et le code du script mais pas de créer / modifier un fichier dans le dit répertoire celui de les exécuter.

PS : tu peux aussi mettre le propriétaire à root:nous. bob sera alors obligé de faire un sudo pour modifier.


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.

Hors ligne

#3 Le 14/07/2024, à 07:36

nany

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

Bonjour,



jplemoine a écrit :

PS : tu peux aussi mettre le propriétaire à root:nous. bob sera alors obligé de faire un sudo pour modifier.

En dehors de /home, ça me semble préférable.
Si on fait un chown bob:nous, autant rester dans le dossier personnel de bob, non ?

En ligne

#4 Le 14/07/2024, à 08:43

jplemoine

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

Oui sauf que dans un cas, on modifie l'existant. Quel est l'intact ? N'y aurait-il pas un effet de bord indésirable ?
J'en vois au moins un : Genre alice (et d'autre utilisateur) peut lire TOUT le /home/bob et non pas que le répertoire scripts (*)
Dans l'autre cas, on est sur un répertoire spécifique et donc sans risque d'effet de bord : alice n'a le droit de lire que le répertoire script (en plus de l'existant).
Et oui, le mettre en root:nous me semble préférable mais rien n'empêche de mettre bob:nous pendant la mise au point puis root:nous ensuite.

(*) /home/bob appartient à bob:bob et est en rwxr-x---. C'est ça que je dis (et maintient) qu'il est préférable de ne pas modifier.
Seul bob et root ont accès.
Si tu mets rwxr-xr-x (comme avant), tout le monde pourra lire et exécuter les fichiers qui sont dans /home/bib


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.

Hors ligne

#5 Le 14/07/2024, à 10:07

nany

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

jplemoine a écrit :

(*) /home/bob appartient à bob:bob et est en rwxr-x---. C'est ça que je dis (et maintient) qu'il est préférable de ne pas modifier.
Seul bob et root ont accès.
Si tu mets rwxr-xr-x (comme avant), tout le monde pourra lire et exécuter les fichiers qui sont dans /home/bib

Il ne s’agirait pas de changer les droits et le groupe de TOUT /home/bob/ mais simplement le groupe de /home/bob/scripts/.
Avec, si nécessaire, un lien vers ce répertoire dans le dossier personnel d’alice.

Dernière modification par nany (Le 14/07/2024, à 10:08)

En ligne

#6 Le 14/07/2024, à 10:58

jplemoine

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

jplemoine a écrit :

(*) /home/bob appartient à bob:bob et est en rwxr-x---.

Donc, alice est dans les others : elle n'aura aucun droit. Pour accéder à /home/bob/scripts, il lui faut au moins les droits x.
Donc, mettre le répertoire /home/bob en 751 (ce que je déconseille car c'est rare mais je ne sais pas pourquoi) mais ça donnerait potentiellement accès à tout le monde (et pas que alice).

C'est pour ça que je préconise de créer un répertoire hors /home/bob et de ne donner les droits qu'aux personnes voulues et de s'affranchir d'un éventuel "effet de bord".

Rien n'empêche ensuite de mettre un lien scripts de /home/bob et /home/alice vers ce répertoire.
Visiblement, ça revient au même : on voit bien un scripts dans son $HOME mais si un autre utilisateur met un tel lien, ça ne fonctionnera pas sauf à l'ajouter à nous (ou le groupe créé) grâce à :

gpasswd -a <utilisateur> <groupe>

(a  ==> add = ajouter ; --add pour le paramètre long)
pour le supprimer

gpasswd -d <utilisateur> <groupe>

(d ==> delete = supprimer ; --delete pour le paramètre long)

Dernière modification par jplemoine (Le 14/07/2024, à 10:59)


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.

Hors ligne

#7 Le 15/07/2024, à 17:41

cristobal78

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

Merci à JPlemoine et à Nany de m'avoir éclairé  smile smile smile

Ça marche au poli et voici ce que j'ai fait en suivant vos instructions à la lettre.

Tout d'abord dans la vraie vie Alice et bob s’appellent : dan (simple user) et jcc (droit sudo)    wink
De même je n'ai pas créé le groupe "nous" (proposition de jplemoine) mais le groupe "famille"  wink

Si ça peut servir à quelqu'un d'autre voici toutes les commandes que j'ai tapées :

- création du groupe "famille"

sudo groupadd famille

- affectation de jcc et dan au groupe famille

sudo usermod -aG famille dan   # (alice)
sudo usermod -aG famille jcc   # (bob)

- création d'un répertoire mes_scripts dans /usr/bin

sudo mkdir   /usr/bin/mes_scripts

- dans ce nouveau répertoire j'ai copié un de mes scripts  nommé "zzz" qui se trouve dans mon répertoire perso nommé "mes_scripts"

sudo cp  mes_scripts/zzz   /usr/bin/mes_scripts/

- mettre récursivement tout le contenu du rép. en  "jcc:famille" (car ce répertoire créé juste avant est de base en "root:root")

sudo chown -R  jcc:famille   /usr/bin/mes_scripts

- mettre récursivement sur tous les fichiers de /usr/bin/mes_scripts les droits à 750

 sudo chmod 750  -R  /usr/bin/mes_scripts

Ouf !  big_smile

Ensuite je suis allé sur le compte "dan" et ouvert un terminal depuis lequel j'ai lancé le script zzz :

 /usr/bin/mes_scripts/zzz

qui s'est parfaitement exécuté.
Merci à tous les 2 !  smile smile smile

Question tout de même
A l'heure actuelle tous les scripts sont dans /home/jcc/mes_scripts (d'où j'ai récupéré "zzz" )
N'aurait-il pas été plus simple, après avoir créé le groupe famille et d'y avoir affecté jcc et dan, de mettre le répertoire /home/jcc/mes_scripts  (existant) en "jcc:famille" et de mettre tout ça en droits 750 au lieu d'aller créer un nouveau répertoire dans /usr/bin/   ??


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#8 Le 15/07/2024, à 18:12

jplemoine

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

Il y a plusieurs manières de faire. Perso, j'aurais copier le répertoire mes_scripts dans /usr/bin
cp -r /home/jcc/mes_scripts /usr/bin que j'aurais mis sous root:famille (pour avoir les même droits entre les 2 utilisateurs) et être obligé de passer par sudo pour modifier (garde-fous).
Tu peux le faire à postériori.

Tu peux aussi :
- renommer /home/jcc/mes_scripts en, par exemple, /home/jcc/mes_scripts.v1
- mettre un lien /home/jcc/mes_scripts et /home/dan/mes_scripts vers /usr/bin/mes_scripts

code à faire sous root ou à préfixer par sudo

ln -s /usr/bin/mes_scripts /home/jcc/mes_scripts
ln -s /usr/bin/mes_scripts /home/dan/mes_scripts
chmod 777 /home/jcc/mes_scripts
chown jcc: /home/jcc/mes_scripts
chmod 777 /home/dan/mes_scripts
chown dan: /home/jcc/mes_scripts

NB : Les liens ne permettent pas d'avoir plus de droits que la cible. Le fait de les mettre en 777 permet de d'affranchir des droits du lien
NB 2 : Dans le chown, le groupe est volontairement absent : cela permet de prendre le groupe par défaut de l'utilisateur.
C'est celui qui est donné en gid par la commande

id

(utilisateur connecté) ou

id <utilisateur>

(utilisateur donné explicitement)
Donc, si tu es connecté jcc,

id

et

id jcc

sont équivalent.


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.

Hors ligne

#9 Le 15/07/2024, à 19:12

nany

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

Bonjour,



cristobal78 a écrit :

N'aurait-il pas été plus simple, après avoir créé le groupe famille et d'y avoir affecté jcc et dan, de mettre le répertoire /home/jcc/mes_scripts  (existant) en "jcc:famille" et de mettre tout ça en droits 750 au lieu d'aller créer un nouveau répertoire dans /usr/bin/   ??

C’est ce que j’avais suggéré. Seulement il faut aussi mettre jcc:famille à /home/jcc/, et ce n’est pas terrible.

Sinon, de mon point de vue, tout ce qui est en dehors de /home/ devrait appartenir à root.

En ligne

#10 Le 15/07/2024, à 19:35

cristobal78

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

@ nany

tout ce qui est en dehors de /home/ devrait appartenir à root.

effectivement cela m'a été rappelé ici bien des fois notamment par cœurnoir (que je salue) de même que dans  le home rien ne devrait appartenir à root.

il faut aussi mettre jcc:famille à /home/jcc/, et ce n’est pas terrible.

je n'ai pas compris pourquoi ce n'est pas terrible. Avec des droits adaptés sur /home/jcc n'y a t il pas moyen d'éviter le "jcc:famille" sur /home/jcc   ?
Si les membres du groupe famille n'ont pas de droit en écriture  où serait le danger ?

J'avoue que j'ai bcp de mal à comprendre le fonctionnement, toutes les finesses et les implications qd il s'agit de "permissions"  roll


Laptop Lenovo Ubuntu 20.04 LTS / DELL Mint 20.2 - XFCE / Laptop HP Mint 20.2 - XFCE

Hors ligne

#11 Le 15/07/2024, à 19:48

jplemoine

Re : (résolu) Que faire pour que user2 puisse exécuter un script de user1

cristobal78 a écrit :

@ nany

tout ce qui est en dehors de /home/ devrait appartenir à root.

Pas nécessairement mais dans dans /usr/bin, oui.

il faut aussi mettre jcc:famille à /home/jcc/, et ce n’est pas terrible.

Parce que par défaut, on ne touche pas aux permissions des répertoires installés par défaut.
Par définition (voir la fhs), les sous répertoires de /home doivent appartenir à l'utilisateur du premier sous-répertoire.
Donc, le répertoire /home/jcc ainsi que tout ce qu'il contient doit appartenir à jcc:jcc.
C'est pour ça que j'ai suggéré de créer un lien /home/jcc/mes_scripts qui permet de faire croire à jcc qu'il existe un répertoire /home/jcc/mes_scripts mais qui en fait est ailleurs.
jcc ne verra pas (ou peu de différence) mais les autres utilisateurs n'ont pas le droit de venir voir /home/jcc comme le veut l'installation de base.
Idem pour les autres utilisateurs.


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.

Hors ligne