su> echo "<username>"はどういう意味ですか?


17

コマンドを入力していたとき

su > echo  "sachin"

パスワードを求めていました。パスワードを入力すると、次のような奇妙なことが起こりました。

ここに画像の説明を入力してください

もう1つ:私のラップトップには別のユーザーHadoopがいますが、

su > echo "Hadoop"

それは言います

Hadoopのパスワードエントリなし

これは何を意味するのでしょうか?


suはスーパーユーザーのアクセス許可を要求し、echoは何かを出力し、echo <text>はテキストを出力し、>は次のようになります。su> echo "sachin"はsu sachinと同じです。
sachin

3
@ Yousef's:いいえecho。実行されません。リダイレクトコマンド「>」の後にあるため、ファイル名として読み取られます。残りの引数はsu通常どおりに渡されます!
Rmano

1
@ Yousef'sあなたは考えているかもしれませんsu $(echo "sachin")。それはあなたが言っていることをするでしょう。
エリアケイガン14年

うーむ、間違った情報のためにとても申し訳ありませんが、私はそれについて実際に確認されませんでしたが、私はそれを試してみましたが、その私が最初に考え出した何のおかげで、右の情報を私に知らせるために
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、このようなA混乱のようにコマンドを書き込むための実用的な理由はめったにありませんよう、ほとんどありません。(ただし、このような構文が受け入れられると、プログラムまたはスクリプトからコマンドを自動的に生成する場合に役立つことがあります。)
エリアカガン14

2
@EliahKaganはい---そして、ここでの混乱はファイル名によって強化されています。su > stdout.txt user...そう難しいことではないでしょう
Rmano

@EliahKagan学んだ!
laike9m
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.