Що означає su> echo "<ім'я користувача>"?


17

Коли я вводив команду

su > echo  "sachin"

він просив пароль. Коли я дав свій пароль, то, як ви бачите, сталися деякі дивні речі:

Введіть тут опис зображення

І ще одне: на моєму ноутбуці є ще один користувач, Hadoop , але коли я це роблю

su > echo "Hadoop"

він говорить

для Hadoop немає запису Passwd

Що це означає?


су - запит дозволів суперкористувача, ехо - це надрукувати щось, ехо <текст> - це надрукувати текст,> це те, що випливає, як, су> ехо «сахін» - це те саме, що і су сахін, тому що ехо » sachin "повертається sachin
OverCoder

3
@ Юсефа: Ні. echoНе виконується. це після команди перенаправлення ">", тому воно читається як ім'я файлу. Решта аргументів передаються suяк завжди!
Рмано

1
@ Yousef's Ви можете думати su $(echo "sachin"). Це зробить те, що ти кажеш.
Eliah Kagan

хммм, так що вибачте за неправильну інформацію, я не був дуже впевнений у цьому, але я спробував це, і ось що я спершу зрозумів, дякую, що повідомили мені правильну інформацію
OverCoder

Відповіді:


30

Ах! Гарна головоломка!

Просто скажіть " exit", і всі ваші файли будуть там (і вихід, який ви пропустите у файлі, який називається echo).

Пояснення:

 su > echo user 

те саме, що

 su user > echo

Отже, ви запускаєте (під) оболонку з su(перемикаєте користувача) на свого користувача, при цьому весь вихід буде перенаправлений на файл, який називаєтьсяecho !

Подивіться:

[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
Гарна відповідь. Ключовий заплутаний і цікавий аспект цієї головоломки полягає в тому, що, хоча ми зазвичай подаємо їх у кінці (або іноді на початку) простої команди, перенаправлення насправді можуть переходити куди завгодно - навіть між аргументами. Ми бачимо команди, як su user > echoвесь час, і > echo su userз деякою частотою, але su > echo userмайже ніколи, оскільки рідко є якийсь практичний привід написати команду таким заплутаним способом. (Щоби такий синтаксис прийнято, іноді корисно при автоматичному генеруванні команд з програми чи сценарію.)
Елія Каган

2
@EliahKagan так --- і плутанина тут посилюється за назвою файлу. su > stdout.txt userне було б настільки хитро ...
Рмано

@EliahKagan Довідався!
laike9m
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.