logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 03-12-2016 09:24:43

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Exécuter un script avec les droit d'aministrateur dans son PATH

Bonjour,

Il y a quelque chose qui échappe mon raisonnement dans BASH. J'ai crée un script qui requière les droits administrateurs et je l'ai placé dans le dossier: ~/script de mon utilisateur personnel. J'ai modifier mon fichier: ~/.bash_profile pour avoir dans PATH le chemin pour l'autocomplétion.

Mon utilisateur arrive exécuter le script mais pas quand je fait un sudo:

$ sudo script
sudo: script: command not found


Pourtant si je fais:

$ sudo echo $PATH
/home/utilisateur/script:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games



Je sais que je pourrais modifier le PATH du root dans /etc/profile mais je ne sais pas si c'est la meilleur solution? Il n'y a pas une solution plus propre?
Merci pour vos réponses
Salutation

Hors ligne

#2 03-12-2016 11:27:11

raleur
Membre
Inscription : 03-10-2014

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Je soupçonne que la susbstitution de la variable $PATH par le shell intervient avant l'exécution de sudo. C'est le même piège que pour les redirections.

romain a écrit :

Je sais que je pourrais modifier le PATH du root dans /etc/profile


Très mauvaise idée pour la sécurité.


Il vaut mieux montrer que raconter.

Hors ligne

#3 03-12-2016 15:00:53

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

C'est sudo qui verrouille le PATH. Il est défini dans le fichier de config:

$ cat /etc/sudoers
...
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
...


Vu que c'est une sécurité, je ne suis pas sur que ce soit très malin de le modifier ici. Il faut que j'étudie ce fichier pour voir si il n'y a pas une solution propre pour résoudre mon problème.

Hors ligne

#4 03-12-2016 22:20:14

MicP
Membre
Inscription : 29-02-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Bonsoir

Quand tu entre une ligne de commandes, l'autocomplétion fonctionne en fonction du PATH du compte utilisateur qui entre la commande,
mais pas du PATH du compte utilisateur qui va être utilisé suite à l'exécution (qui n'a pas encore eu lieu) de la commande sudo ou su


Par contre, si tu te connecte d'abord sous le compte utilisateur que tu veux utiliser pour lancer la commande qui suivait la commande sudo ou su
ce sera le PATH définit pour cet utilisateur qui sera utilisé par l'autocomplétion.


=======
Au lieu de créer un répertoire ~/script et d'avoir à modifier ton fichier ~/.profile en conséquence,
il te suffisait de créer le répertoire ~/bin et ~/.profile l'aurait ajouté au PATH à la prochaine connexion à ton compte utilisateur.


EDIT : Malheureusement non : si à l'installation on ne donne pas de mot de passe, sudo est bien installé,
mais le fichier ~/.profile n'est alors plus pris en compte.

Voir la fin du fichier ~/.profile original :


# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Dernière modification par MicP (07-12-2016 05:15:39)

Hors ligne

#5 03-12-2016 22:38:38

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Bonsoir,

Merci pour cette réponse. J'ai aussi un dossier ~/bin en plus du dossier ~/scripte (pour différencier les binaires des scripts enfin ma petites cuisine!!) et dans ~/.profile, j'ai ajouté les lignes pour pour modifié mon PATH pour les scripts. Avec cette solution, j'ai mon PATH que dans les 6 TTY mais pas en graphique (j'utilise Openbox). Pour cela, j'ai du faire un lien symbolique de ~/.profile vers ~/.xsessionrc. Avec cette méthode, elle modifie mon PATH au démarrage de X ainsi qu'à l'ouverture de mes terminaux graphique.

Mon problème est que quand je fais un sudo, le PATH est verrouillé par l'option secure_path dans le fichier de configuration /etc/sudoers. Je crois que je pourrais désactiver le secure_path mais je pense que c'est une erreur niveau sécurité. Ou alors de trouver une subtilité de configuration de sudo mais la je me suis pas encore amusé à chercher comment résoudre mon problème.

Voila le raisonnement que j'ai fait et je ne crois pas dire trop de connerie?

salutation

Hors ligne

#6 03-12-2016 23:13:04

MicP
Membre
Inscription : 29-02-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Je n'utilise pas sudo (ni Openbox), donc je ne sais pas trop bien comment il fonctionne d'autant que chaque distribution a un fichier /etc/sudoers personnalisé.

J'ai remarqué que le secure_path de /etc/sudoers corresponds au PATH utilisé par le compte root (si install debian sans sudo), et comme j'ai cru comprendre que pour qu'à l'installation de debian on puisse utiliser sudo plutôt que su , je suppose donc qu'il est impossible de se connecter sous le compte root et que c'est alors la variable secure_path qui est utilisé comme PATH pour les commandes lancées par sudo

=======
En fouillant un peu, j'ai trouvé cet extrait qui pourrait t'intéresser dans la page web https://wiki.debian.org/sudo


The packaged /etc/sudoers file contains this line:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"


Previous versions did not include that line. If you had a locally modified /etc/sudoers (most would) and then upgraded and kept your locally modified version then this required line is now missing. It no longer overrides your PATH when using sudo. This most likely results in PATH not being set properly and not including the system directories. The fix is to merge your local changes into the new package /etc/sudoers file. Or to put your local changes in the new /etc/sudoers.d/ location as a uniquely named file such as /etc/sudoers.d/local-sudoers. …

Hors ligne

#7 03-12-2016 23:26:50

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Tu n'utilise pas sudo?? Donc pour les tâche d'administration tu te connectes en root? ou tu utilise la commande:

$ su -c 'commande root'



Il me semblais que pour des questions de sécurité, il est préférable d'utiliser cette solution, non? Je sais que de base Debian, n'installe pas sudo vu que je dois chaque fois le réinstaller.

Je suis déjà aller lire cette page mais la version française. Et ma constatation était aussi de modifier cette variable mais après, j'aurais mon PATH personnalisé pour tous les utilisateurs voulant utiliser sudo d'où ma réflexion sur le faite que ça serait une erreur pour la sécurité.

Hors ligne

#8 03-12-2016 23:41:30

MicP
Membre
Inscription : 29-02-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Oui, la plupart du temps, j'utilise

su -c 'commande utilisant le compte root'

Je n'utilise mon système debian que pour mon compte personnel (pas professionnel, je ne travaille pas)
J'essaye d'apprendre en utilisant les installations par défaut, et de temps en temps, je m'amuse à apprendre quelques trucs.

En aidant les autres sur des forums, je peux en apprendre plus car j'y trouve des problèmes que je n'aurai pas rencontré tout seul sur seulement 3 machines différentes presque toujours utilisées dans le même contexte.

=======
Je viens d'installer une machine virtuelle debian utilisant sudo.
Pour que sudo et /etc/sudoers et tout le nécesssaire à sudo soit installé, il suffit de ne pas donner de mot de passe au compte root au moment de l'installation.

J'ai donc pu constater que je me suis planté dans mes suppositions de mon message précédent , et j'ai donc barré les lignes.

Là, il est clair qu'il me faudra en apprendre beaucoup plus sur sudo

Dernière modification par MicP (03-12-2016 23:50:06)

Hors ligne

#9 03-12-2016 23:53:04

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Moi aussi je fais des testes dans une VM. C'est pas tous faux se que tu as tracé plus haut. Pour l'autocomplétion, il va chercher dans le PATH de l'utilisateur mais pour exécuter le sudo, il utilise le PATH définit par secure_path. Je viens de le faire en VM j'ai crée un nouvel utilisateur et il arrive exécuter mon script avec sudo mais il n'arrive pas l'avoir avec l'autocomplétion. Faudrait que je trouve comment verrouiller le secure_path pour mon utilisateur

Dernière modification par romain (03-12-2016 23:58:18)

Hors ligne

#10 04-12-2016 02:04:28

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

hello

essaye plutot avec un

sudo -i script.sh



ou encore

sudo -E script.sh



le path de ton user sera préservé.

cf : le man

++

Dernière modification par greenmerlin (04-12-2016 02:04:55)


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#11 04-12-2016 02:14:14

MicP
Membre
Inscription : 29-02-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Je viens de ré-installer une nouvelle machine virtuelle debian pour vérifier ce que j'ai constaté :
même après avoir créé un répertoire ~/bin il n'est pas ajouté dans le path de l'utilisateur si le système est installé pour utiliser sudo <=> pas de mot de passe pour le compte root au moment de l'installation.

En "sourçant" manuellement le fichier ~/.profile , le répertoire ~/bin (<=>  /home/michel/bin ) est bien ajouté au PATH de l'utilisateur.

J'en conclus que le fichier ~/.profile n'est pas utilisé.

Je continue mes recherches …

=======


michel@debian:~$ cat bin/monScript.sh
#!/bin/bash

echo $PATH
echo "okokok"

michel@debian:~$

michel@debian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
michel@debian:~$

michel@debian:~$ . ~/.profile
michel@debian:~$ echo $PATH
/home/michel/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
michel@debian:~$

michel@debian:~$ sudo -i monScript.sh
[sudo] password for michel:
-bash: monScript.sh : commande introuvable
michel@debian:~$

michel@debian:~$ sudo -E monScript.sh
sudo: monScript.sh: command not found
michel@debian:~$

michel@debian:~$ sudo -i /home/michel/bin/monScript.sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
okokok
michel@debian:~$

michel@debian:~$ sudo -E /home/michel/bin/monScript.sh
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
okokok
michel@debian:~$


Après avoir sourcé ~/.profile , la complétion de la commande a bien fonctionné

sudo monS<TAB>

mais elle n'a pas pu être exécutée sans lui donner le chemin absolu, et quand elle a retourné le PATH ( même avec les options -i ou -E de sudo ) , c'était le PATH de secure_path

=======
J'espère que ça fonctionnera mieux sur le système de romain que sur ma nouvelle machine virtuelle.

Dernière modification par MicP (04-12-2016 02:47:15)

Hors ligne

#12 04-12-2016 02:17:55

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

greenmerlin a écrit :

hello

essaye plutot avec un

sudo -i script.sh



ou encore

sudo -E script.sh



le path de ton user sera préservé.

cf : le man

++



j'aime bien radoté wink


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#13 04-12-2016 05:05:54

MicP
Membre
Inscription : 29-02-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

@ greenmerlin

j'aime bien radoté wink

Moi aussi, ça m'arrive assez souvent d'ailleurs, mais je crois que c'est quand, dans mes souvenirs, la personne à qui je l'ai déjà dit ne m'a pas donné l'impression d'avoir entendu.

À propos de ta signature, je constate que nous partageons les mêmes centres d'intérêt wink

Dernière modification par MicP (04-12-2016 05:09:37)

Hors ligne

#14 04-12-2016 11:18:10

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

+1 Micp smile smile

" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#15 05-12-2016 21:16:31

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Je reviens quand même poster alors je n'ai trouvé aucune solution car malheureusement pour des question de sécurité le PATH de la commande sudo et bloqué. Et je ne veut pas modifier le fichier de config sinon cel se reporte sur tous les utilisateur. Je me ferais un raison d'utiliser le chemin complet. Si quelqu'un trouve une meilleur solution, c'est avec plaisir!

Salutation et merci pour vos réponses

Hors ligne

#16 06-12-2016 08:57:20

greenmerlin
Membre
Lieu : 127.0.0.1
Distrib. : Archlinux/TinycoreLinux(CorePure 64-6.4.1)/Jessie
Noyau : 4.2.2-1 / 4.4
(G)UI : wmaker
Inscription : 23-01-2016

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

@romain  : ma solution ne fonctionne pas ????

Dernière modification par greenmerlin (06-12-2016 08:57:32)


" La plus importante et la plus négligée de toutes les conversations, c'est l'entretien avec soi-même. "
Chancelier Oxenstiern.

536920766f7573206172726976657220c3a0206c69726520c3a7612c20632765737420717565206e6f757320706172746167656f6e73206c6573206dc3aa6d65732063656e747265732064e28099696e74c3a972c3aa74732e

Hors ligne

#17 06-12-2016 10:39:40

romain
Membre
Lieu : Suisse
Distrib. : Debian, "Stretch" ou "Sid"
Noyau : Linux 4.9.0-3-amd64 ou 4.11.0-1-amd64
(G)UI : openbox forever
Inscription : 31-01-2013

Re : Exécuter un script avec les droit d'aministrateur dans son PATH

Excuse, je n'avais pas répondu pour ta solution. Non ces paramètres sont court-circuitée par l'option secure_path. J'ai l'impression que je suis obligé de désactiver l'option.

Hors ligne

Pied de page des forums