cat: flag.txt: Permission denied
NOTE: permission denied の類題です。
初心者向けヒント1
ncで接続すると、シェルが起動することがわかります。chal.shを読むと、シェルが起動する前にパーミッション 400 でflag.txtが作成されています。- このコマンドを実行するのは
rootユーザーです。 - そのため、
400はrootユーザーのみ読み取りができることを意味します。 - そして
runuser -u alpaca -- shによってalpacaユーザーでシェルが起動します。 - しかし、
cat flag.txtを実行してもPermission deniedとなり、フラグを読むことができません。 - では、どうすればフラグを読み取れるでしょうか?
初心者向けヒント2
- メタ的な視点ですが、そもそも、なぜわざわざ
chal.shの中でflag.txtのパーミッションを設定しているのでしょうか? chal.shのパーミッションはDockerfileで指定されています。- 同じように、
flag.txtもDockerfile側でパーミッションを設定することは可能なはずです。 Dockerfileでパーミッションを指定したときと、chal.shのようにパーミッションを指定するときで、どのような挙動の差が生まれるかを考えてみましょう。
初心者向けヒント3
- 前の問題である permission denied では
nobodyユーザーが使われていましたが、今回はalpacaユーザーが使われています。 - また、
/home/alpacaディレクトリで実行されています。 - これにより、何が可能になるでしょうか。
[案内] Daily AlpacaHack を改善するためのサーベイにご協力ください(2026年4月分): https://forms.gle/SnpgzvYqjUX9uv8i6