Co oznacza su> echo „<nazwa użytkownika>”?


17

Kiedy wpisałem polecenie

su > echo  "sachin"

prosiło o hasło. Kiedy podałem hasło, wydarzyły się dziwne rzeczy, jak widać:

Wpisz opis zdjęcia tutaj

Jeszcze jedno: na moim laptopie jest inny użytkownik, Hadoop , ale kiedy to robię

su > echo "Hadoop"

to mówi

brak hasła dla Hadoop

Co to znaczy?


su to prośba o uprawnienia superużytkownika, echo ma na celu wydrukowanie czegoś, echo <tekst> ma na celu wydrukowanie tekstu, the> to, co następuje, na przykład su> echo „sachin” jest takie samo jak su sachin, ponieważ echo „ sachin ”zwraca sachin
OverCoder

3
@ Yousef's: Nie. Nie echojest wykonywany. jest po poleceniu przekierowania „>”, więc jest odczytywany jako nazwa pliku. Reszta argumentów jest przekazywana sujak zwykle!
Rmano

1
@ Yousef's Być może masz na myśli su $(echo "sachin"). To by zrobiło, co mówisz.
Eliah Kagan

hmmmm, przepraszam za złe informacje, nie byłam do końca pewna, ale spróbowałam i właśnie to wymyśliłam, dzięki za poinformowanie mnie o właściwej informacji
OverCoder

Odpowiedzi:


30

Ach! Niezła łamigłówka!

Po prostu powiedz „ exit”, a wszystkie twoje pliki będą tam (a dane wyjściowe, których brakuje w pliku o nazwie echo).

Rozwinięcie:

 su > echo user 

jest taki sam jak

 su user > echo

Więc zaczynasz (pod) powłokę z su(przełącz użytkownika) na użytkownika, a wszystkie dane wyjściowe są przekierowywane do pliku o nazwieecho !

Popatrz:

[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] % 

13
Dobra odpowiedź. Kluczowym mylącym i interesującym aspektem tej układanki jest to, że chociaż zwykle dostarczamy je na końcu (lub czasem na początku) prostej komendy, przekierowania mogą faktycznie iść gdziekolwiek - nawet między argumentami. Widzimy polecenia jak przez su user > echocały czas i > echo su userz pewną częstotliwością, ale su > echo userprawie nigdy, ponieważ rzadko istnieje praktyczny powód, aby napisać polecenie w tak mylący sposób. (To, że taka składnia jest akceptowana, jest czasami przydatne podczas automatycznego generowania poleceń z programu lub skryptu.)
Eliah Kagan

2
@EliahKagan tak --- a zamieszanie potęguje nazwa pliku. su > stdout.txt usernie byłoby takie trudne ...
Rmano

@EliahKagan Learned!
laike9m
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.