Que signifie su> echo «<username>»?

17

Quand j'entrais dans la commande

su > echo  "sachin"

il demandait un mot de passe. Lorsque j'ai donné mon mot de passe, des choses étranges se sont produites, comme vous pouvez le voir:

Entrez la description de l'image ici

Une dernière chose: il y a un autre utilisateur, Hadoop , sur mon ordinateur portable, mais quand je le fais

su > echo "Hadoop"

ça dit

aucune entrée passwd pour Hadoop

Qu'est-ce que ça veut dire?

Sachin Setiya
la source
le su est la demande d'autorisations de superutilisateur, l'écho est d'imprimer quelque chose, echo <text> est d'imprimer du texte, le> est ce qui suit, comme, su> echo "sachin" est le même que su sachin, car echo " sachin "renvoie sachin
OverCoder
3
@ Yousef's: Non echon'est pas exécuté. c'est après la commande de redirection ">", il est donc lu comme un nom de fichier. Le reste de l'argument est passé sucomme d'habitude!
Rmano
1
@ Yousef Vous pensez peut-être su $(echo "sachin"). Cela ferait ce que vous dites.
Eliah Kagan du
hmmmm, donc désolé pour la mauvaise information, je n'en étais pas vraiment sûr mais je l'ai essayé et c'est ce que j'ai découvert pour la première fois, merci de m'avoir informé avec la bonne info
OverCoder

Réponses:

30

Ah! Joli puzzle!

Dites simplement " exit", et tous vos fichiers seront là (et la sortie que vous manquez dans un fichier appelé echo).

Explication:

 su > echo user 

est le même que

 su user > echo

Vous démarrez donc un (sous) shell avec su(changer d'utilisateur) vers votre utilisateur, toutes les sorties étant redirigées vers un fichier appeléecho !

Regardez:

[romano:~] % cd tmp/dvd-usa-hd 
[romano:~/tmp/dvd-usa-hd] % ls
dvd-usa-hd_01_01.avi
[romano:~/tmp/dvd-usa-hd] % su > echo romano
Password: 
[romano:~/tmp/dvd-usa-hd] % ls
[romano:~/tmp/dvd-usa-hd] % exit
[romano:~/tmp/dvd-usa-hd] % ls
dvd-usa-hd_01_01.avi  echo
[romano:~/tmp/dvd-usa-hd] % cat echo
dvd-usa-hd_01_01.avi
echo
[romano:~/tmp/dvd-usa-hd] % 
Rmano
la source
13
Bonne réponse. L'aspect déroutant et intéressant de ce puzzle est que, bien que nous les fournissions généralement à la fin (ou parfois au début) d'une commande simple, les redirections peuvent en fait aller n'importe où - même entre les arguments. Nous voyons des commandes comme su user > echotout le temps, et > echo su useravec une certaine fréquence, mais su > echo userpresque jamais, car il n'y a rarement aucune raison pratique d'écrire une commande d'une manière aussi déroutante. (Cependant, cette syntaxe est acceptée est parfois utile lors de la génération automatique de commandes à partir d'un programme ou d'un script.)
Eliah Kagan
2
@EliahKagan yes --- et la confusion est renforcée par le nom du fichier. su > stdout.txt userne serait pas si difficile ...
Rmano
@EliahKagan Learned!
laike9m