Was bedeutet su> Echo "<Benutzername>"?

17

Als ich den Befehl eingab

su > echo  "sachin"

Es wurde nach einem Passwort gefragt. Als ich mein Passwort gab, passierten einige seltsame Dinge, wie Sie sehen können:

Geben Sie hier eine Bildbeschreibung ein

Eine weitere Sache: Es gibt einen anderen Benutzer, Hadoop , auf meinem Laptop, aber wenn ich es tue

su > echo "Hadoop"

es sagt

kein passwd Eintrag für Hadoop

Was bedeutet das?

Sachin Setiya
quelle
Das su ist die Frage nach Superuser-Berechtigungen. Das Echo soll etwas drucken. Das echo <Text> soll Text drucken. sachin "kehrt zurück sachin
OverCoder
3
@ Yousef's: Nein echowird nicht ausgeführt. Es steht nach dem Umleitungsbefehl ">", wird also als Dateiname gelesen. Der Rest der Auseinandersetzung wird suwie gewohnt weitergereicht!
Rmano
1
@ Yousefs Du denkst vielleicht an su $(echo "sachin"). Das würde tun, was du sagst.
Eliah Kagan
hmmmm, also entschuldige die falschen Infos, ich war mir nicht sicher, aber ich habe es ausprobiert und das habe ich zuerst herausgefunden, danke, dass du mich mit den richtigen Infos informiert hast
OverCoder

Antworten:

30

Ah! Schönes Puzzle!

Sagen Sie einfach " exit" und alle Ihre Dateien werden dort sein (und die Ausgabe, die Sie in einer Datei mit dem Namen " " verpassen echo).

Erläuterung:

 su > echo user 

ist das gleiche wie

 su user > echo

Sie starten also eine (Unter-) Shell mit su(Benutzer wechseln) zu Ihrem Benutzer, wobei alle Ausgaben in eine Datei namens umgeleitet werdenecho !

Aussehen:

[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
quelle
13
Gute Antwort. Der verwirrende und interessante Aspekt dieses Puzzles ist, dass, obwohl wir sie normalerweise am Ende (oder manchmal am Anfang) eines einfachen Befehls bereitstellen, Umleitungen tatsächlich überall hin gehen können - sogar zwischen Argumenten. Wir sehen Befehle wie su user > echoimmer und > echo su usermit einiger Häufigkeit, aber su > echo userfast nie, da es selten einen praktischen Grund gibt, einen Befehl so verwirrend zu schreiben. (Dass eine solche Syntax akzeptiert wird, ist gelegentlich nützlich, wenn Befehle automatisch aus einem Programm oder Skript generiert werden.)
Eliah Kagan
2
@EliahKagan ja --- und die Verwirrung hier wird durch den Dateinamen verstärkt. su > stdout.txt user
Wäre
@EliahKagan Gelernt!
laike9m