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 01/03/2014, à 11:37

Gaara

différence entre "sudo" et "sudo su"

bonjour,
J'aimerais connaitre la différence entre:

sudo commande

et

sudo su
commande

car le résultat n'est pas toujours le même, en executant un script python.
merci


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#2 Le 01/03/2014, à 11:41

Postmortem

Re : différence entre "sudo" et "sudo su"

Salut,
Une petite explication ici


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#3 Le 01/03/2014, à 11:49

Gaara

Re : différence entre "sudo" et "sudo su"

merci smile


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#4 Le 01/03/2014, à 11:50

toutafai

Re : différence entre "sudo" et "sudo su"

Bonjour,

Je suis pas aller voir le lien (qui dit aussi peut être ce qui va suivre), mais c'est (en autre) une question d’environnement dans lequel on va se retrouver lors de l’exécution des commandes (d’où certainement les différences lors de l’exécution de ton script selon comment tu le l'exécute) :

sudo commande > commande sera lancée sera dans l’environnement de l’utilisateur xyz
sudo su commande > commande sera (par défaut) dans l’environnement root

Dernière modification par toutafai (Le 01/03/2014, à 11:51)


Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).

Hors ligne

#5 Le 01/03/2014, à 11:59

Gaara

Re : différence entre "sudo" et "sudo su"

Ok, donc pour simplifier, le sudo su est un "super sudo" !
car j'écris un script qui a besoin d'être exécuté en root (mais apparemment dans l’environnement root, je savais pas) , et quand je fesais sudo python script.py, le résultat était différent que sudo su python script.py ... Enfin ça marchait mais pas comme ça aurait dû marcher.
Bref, merci à vous 2 !


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#6 Le 01/03/2014, à 22:24

toutafai

Re : différence entre "sudo" et "sudo su"

la simplification est un peu rapide.... c'est plus subtile que cela, voit le lien donné plus haut


Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).

Hors ligne

#7 Le 02/03/2014, à 22:58

tiramiseb

Re : différence entre "sudo" et "sudo su"

Salut,

Évite "sudo su". Utilise plutôt "sudo -i"...

Hors ligne

#8 Le 03/03/2014, à 02:14

nesthib

Re : différence entre "sudo" et "sudo su"

N'utilise pas sudo su, utilise au choix sudo -s si tu veux garder ton environnement, ou sudo -i si tu veux l'environnement de root.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#9 Le 04/03/2014, à 11:46

Gaara

Re : différence entre "sudo" et "sudo su"

En fait mon erreur est incompréhensible:

Mon script se lance automatiquement. Les premières lignes servent à repérer le /home/user (en python)

import os
user = os.getenv("SUDO_USER")
home = os.path.join("/home/" + user)
print home

Quand je fais:
python script.py                                 ça marche pas, normal ça doit être lancé en "root"
sudo -s python script.py                        ça marche
sudo -i python script.py                        ça marche

sudo su
python
>>> les lignes de mon script     ça marche

Mais: quand le script se lance en dur, j'ai cette erreur:

mail reçu via anacron a écrit :

/etc/cron.daily/apt:
Traceback (most recent call last):
File "/home/guillaume/.savunattended/progressbarV7.1.py", line 20, in <module>
   home = os.path.join("/home/" + user)
TypeError: cannot concatenate 'str' and 'NoneType' objects

Comment reproduire cette erreur en console, pour pouvoir tester et corriger mon script?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#10 Le 04/03/2014, à 12:49

Gaara

Re : différence entre "sudo" et "sudo su"

Bon en fait c'est un problème de variables d'environnement.
Je retrouve l'erreur en faisant

sudo env -i python script.py

(Plus trop de rapport avec le sujet, finalement)

Dernière modification par gaara92 (Le 04/03/2014, à 12:51)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#11 Le 04/03/2014, à 22:28

tiramiseb

Re : différence entre "sudo" et "sudo su"

Bon en fait c'est un problème de variables d'environnement.

Oui. Tu cherches à accéder à la variable "SUDO_USER", mise en place par sudo.
Sauf que en faisant "sudo su", sudo exécute su qui exécute python qui exécute ton script. Lors de l'exécution de su, la variable est perdue.
C'est entre autres pour ça qu'on t'indique qu'il faut utiliser "sudo -i" ou "sudo -s" au lieu de "sudo su".

Hors ligne

#12 Le 04/03/2014, à 22:53

Gaara

Re : différence entre "sudo" et "sudo su"

Et aussi j'ai remarqué que les scripts qui étaient lancés par cron n'avaient pas de variable d'environnement (ou du moins qu'ils étaient modifiés), donc le script me donnait comme résultat "None", ou au mieux /root/ (avec d'autres lignes)
Donc finalement j'ai opté pour écrire

home = /home/mon_user

Comme ça c'est plus simple. Je voulais juste que ce soit automatisé, mais c'est trop compliqué pour moi.

Dernière modification par gaara92 (Le 04/03/2014, à 22:55)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#13 Le 05/03/2014, à 07:05

nesthib

Re : différence entre "sudo" et "sudo su"

Tu peux utiliser directement :

import os
os.path.expanduser('~')

Et si tu regardes le code du module, ce qui est utilisé est :

if 'HOME' not in os.environ:
    import pwd
    userhome = pwd.getpwuid(os.getuid()).pw_dir
else:
    userhome = os.environ['HOME']

En gros, si l'environnement n'a pas de variable HOME, on récupère le dossier correspondant à l'uid de l'utilisateur courant (depuis /etc/passwd).


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#14 Le 05/03/2014, à 10:52

Gaara

Re : différence entre "sudo" et "sudo su"

oui j'ai essayé cette commande,

import os
home = os.path.expanduser('~')

mais le résultat était

print home
/root/

et non /home/mon_user


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#15 Le 06/03/2014, à 06:17

nesthib

Re : différence entre "sudo" et "sudo su"

Pourtant :

$ sudo -s python -c "import os ; print os.path.expanduser('~')"
/home/ton_utilisateur

et

$ sudo -s python -c "import os ; print os.environ['USER']"
root

Encore une fois, si tu veux conserver l'environnement utilisateur utilise sudo -s, sinon il est normal que le home soit définit à /root.


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#16 Le 06/03/2014, à 11:41

Gaara

Re : différence entre "sudo" et "sudo su"

Oui, comme ça, ça marche aussi chez moi, mais:
en enlevant les variables d'environnement (env -i),

$ sudo -s env -i python -c "import os ; print os.path.expanduser('~')"
/root

Or mon code est lancé dans ces conditions. (lancé par cron)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#17 Le 06/03/2014, à 23:35

tiramiseb

Re : différence entre "sudo" et "sudo su"

Pourquoi ton code est-il lancé avec "env -i" ?
Si tu exécutes explicitement ton programme en ignorant son environnement, comment veux-tu pouvoir utiliser l'environnement ?

Hors ligne

#18 Le 07/03/2014, à 00:06

Gaara

Re : différence entre "sudo" et "sudo su"

C'est tout là le problème, car je n'utilise pas env-i dans mon code... c'est juste pour les tests, en console.

En fait j'ai eu un message d'erreur que je voulais reproduire, pour pouvoir le corriger. Et le seul moyen que j'ai trouvé a été d'enlever les variables d'environnement.
Dans mon code, j'ajoute le display [0.0] et .Xauthority, sinon la fenêtre n'est pas visible. Donc je me disais qu'il fallait ajouter une autre variable pour corriger cette erreur... Je me trompe peut-être !

Ceci dit, j'ai contourné le problème, en détectant le chemin du home via un script de configuration pour mon application, puis en l'injectant dans mon code avec un fichier.config
Mais ce serait intéressant de trouver une solution malgré tout...


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#19 Le 07/03/2014, à 04:20

nesthib

Re : différence entre "sudo" et "sudo su"

Quel cron utilises-tu ? root ou utilisateur ?
Pourquoi ne pas définir les variables qui t'intéressent dans le cron ?


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#20 Le 07/03/2014, à 21:55

Gaara

Re : différence entre "sudo" et "sudo su"

A vrai dire je sais pas trop. Je ne l'ai pas configuré, mais le script (qui vient du paquet unattended-upgrades, mises à jour automatiques) que j'ai modifié se lance automatiquement, et mon script se lance en parallèle. (j'utilise subprocess.popen).
Je soupçonne anacron, car le lancement n'est pas à une heure fixe, mais lui non plus n'est pas configuré pour lancer unattended.
Je ne sais pas comment il se lance ! lol

Edit: au fait, mon script est ici

Dernière modification par gaara92 (Le 07/03/2014, à 22:19)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#21 Le 07/03/2014, à 22:54

papica15

Re : différence entre "sudo" et "sudo su"

Quand j'essaie de décoder la clef wpa chez moi, après quelques commandes un message apparaît: mon0 Is on Channel -1, but the AP uses Channel 6. Eske quelqu'un pourrait m'aider a résoudre mon problème stp ???

Dernière modification par papica15 (Le 07/03/2014, à 22:54)

Hors ligne

#22 Le 07/03/2014, à 23:03

tiramiseb

Re : différence entre "sudo" et "sudo su"

papica15: quel est le rapport entre la problématique de gaara92 (sudo... ) et ta clef wpa ?

Hors ligne

#23 Le 11/03/2014, à 06:16

papica15

Re : différence entre "sudo" et "sudo su"

Aucun rapport tiramiseb, je pensais simplement que tu pourrais m'aider car tu m'as l'air d'un gar brillant en informatique !!!

Hors ligne

#24 Le 11/03/2014, à 07:42

tiramiseb

Re : différence entre "sudo" et "sudo su"

eh bien crée une nouvelle discussion dans la section appropriée du forum plutôt que de parasiter un sujet qui n'a rien à voir...

Hors ligne

#25 Le 11/03/2014, à 09:15

toutafai

Re : différence entre "sudo" et "sudo su"

papica15 a écrit :

Quand j'essaie de décoder la clef wpa chez moi, après quelques commandes un message apparaît: mon0 Is on Channel -1, but the AP uses Channel 6. Eske quelqu'un pourrait m'aider a résoudre mon problème stp ???


Bonjour,

je rajoute 2 choses :

1/ Le problème est connu, il aurai suffit de chercher un peu dans ce forum ou bien avec google pour trouver la solution.

2/ Cracker une clef wep ou wpa1 (c'est pas possible pour du wpa2) nécessite un dictionnaire (pas le dictionnaire traditionnelle hein..., mais un fichier dictionnaire)...bref, c'est possible, donc pourquoi ce faire chier a cracker sa clef (si c'est bien la clef de TON wifi ....désolé ; mais on sait pertinemment que ce genre de demande est dans 99% des cas pour cracker du wifi du voisin roll )


Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).

Hors ligne