Slide 1

Slide 1 text

WEB エンジニアなら知っている CUI クイズ WEB エンジニア勉強会 #10 前座LT 2018.11.09 : MzRyuKa 1

Slide 2

Slide 2 text

自己紹介 みずりゅ Twitter: @MzRyuKa 好きなもの: ネコ、 うさまる、 技術な話全般 最近触っている言語:golang、Elixir、Vue.js アイコンはTwitter ではネコ、connpass では「 うさまる」 です。 2

Slide 3

Slide 3 text

今回の趣旨 今は簡単に開発環境を整えられる時代です。 しかし、 どんなに便利になっても問題発生時に最後に触るのはコン ソー ル、 そうCUI なのです。 CUI:(character user interface または console user interface) 3

Slide 4

Slide 4 text

今回の趣旨( 続き) これからWEB と関連するCUI に関する2ー 3択のクイズをお出しし ます。 乾杯が待ち遠しい皆さんの時間つぶしにしてください。 もし知らない内容があったのなら活用してみてください。 4

Slide 5

Slide 5 text

練習問題 SELinux で一時的にアクセス制限を解除したい。 以下のコマンドを実 施後、SELinux はどのモー ドになっているか? # setenforce 0 A:Disabled B:Permissive C:Enforcing 5

Slide 6

Slide 6 text

回答 B:Permissive 6

Slide 7

Slide 7 text

解説 setenforce コマンドで「0」 を指定すると、「SELinux は有効だが、 アクセス制限は行わず警告を出力」 のモー ドである「Permissive」 となります。 なお、「1」 を指定した場合は、 アクセス制限が発生する 「Enforcing」 となります。 それ以外の数値は無効です。 7

Slide 8

Slide 8 text

と、 こんな感じで進めます。 回答は心の中で。 8

Slide 9

Slide 9 text

第一問 サー ビス問題。Solaris 10 で、apache をOS 起動時に自動起動するス クリプトファイルはどれか。 A:/etc/rc3.d/D50apache B:/etc/rc3.d/K50apache C:/etc/rc3.d/S50apache 9

Slide 10

Slide 10 text

回答 C:/etc/rc3.d/S50apache 10

Slide 11

Slide 11 text

解説 Solaris10 では、「/etc/rcX.d」(X は任意の数字) の下にあるスクリプ ト名が「S」 で始まるファイル名の場合、 自動起動します。 一方、「K」 で始まる場合は、OS 停止時の自動停止用スクリプトに なります。 それ以外で始まる場合は特に意味は持ちません。 11

Slide 12

Slide 12 text

第二問 「 マンガでわかるDocker2」 よりコマンド借用。 空欄[ ] に入る設定値 はどれか答えよ。 内容は「 ホストのカレントディレクトリをコンテナ内の所定のパス にマウントする」 である。 $ docker run -d -p 80:80 --name myapp [ ] php:7.0-apache A: -v $(pwd):/var/www/html B: -v /var/www/html:$(pwd) C: -v /var/www/html 12

Slide 13

Slide 13 text

回答 A:-v $(pwd):/var/www/html 13

Slide 14

Slide 14 text

解説 ボリュー ムのマウントは、「-v」 オプションの後に、< ホスト側のデ ィレクトリ>:< コンテナ側のディレクトリ> の順で指定します。 B: の場合は、 ホストとコンテナの順が入れ替わっています。 また、 動作するかも不明ですし、 動作しても実施内容とは異なります。 C: の場合は、 ホスト上の所定の位置にディレクトリを作って、 コン テナ側のディレクトリにマウントします。 14

Slide 15

Slide 15 text

第三問 Git で「 履歴をコミット毎に1行で表示し、 各コミットで変更された ファイルのリストを表示する。」 コマンドはどれか。 A:git log --oneline B:git log --oneline --shortstat C:git log --oneline --stat 15

Slide 16

Slide 16 text

回答 C:git log --oneline --stat 16

Slide 17

Slide 17 text

解説 「--oneline」 は履歴をコミット毎に1行で表示するオプション。 「--stat」 は各コミットで変更されたファイルのリストを表示するオ プション。 各コミットで変更されたファイルのリストを一行で表示する場合、 オプションには「--shortstat」 を使用する。 17

Slide 18

Slide 18 text

第四問 サー バが rewalld でアクセス制限をかけている。 ここで、 特定のIP ア ドレス(192.168.1.0/24) に対してhttps を3日間だけ拒否したい。 有効な設定すべてを選べ。 A:firewall-cmd --remove-rich-rule="rule family=ipv4 source address=192.168.1.0/24 service name=https accept" --timeout=72h B:firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 service name=https drop" --timeout=72h C:firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 service name=https drop" --timeout=3d 18

Slide 19

Slide 19 text

回答 なし 19

Slide 20

Slide 20 text

解説 時間指定「--timeout」 は「--add-rich-rule」 のみ利用可能です。 許 可(accept)、 拒否(drop) の両方で利用できます。「--remove-rich- rule」 には使えません。 永続設定「--permanent」 と併用できません。 「--timeout」 で指定可能な単位は「s」「m」「h」 のみです。 それ 以外の文字はエラー です。 設定するとしたら以下のイメー ジ。 firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.1.0/24 service name=https drop" --timeout=72h 20

Slide 21

Slide 21 text

第五問 ダイジェスト認証が設定されているペー ジに対してcurl でアクセスす る場合、 有効なコマンドを全て選択せよ。 ユー ザ/ パスワー ドはuser1 とpass1 とする。 A:curl --user “user1:pass1” https://example.com/foo/bar.json B:curl --basic -u “user1:pass1” https://example.com/foo/bar.json C:curl --digest -u “user1:pass1” https://example.com/foo/bar.json 21

Slide 22

Slide 22 text

回答 C:curl --digest -u “user1:pass1” https://example.com/foo/bar.json のみ 22

Slide 23

Slide 23 text

解説 「--digest」 を利用してダイジェスト認証を行います。 なお、Basic 認 証の場合では「A」 と「B」 のどちらでも可です。 認証に利用するオプション「-u」 と「--user」 は同じ意味です。 余談:Basic 認証とダイジェスト認証の大きな違いは変換方法です。 Basic 認証はBase64 で、 ダイジェスト認証はMD5 で、 変換されます。 23

Slide 24

Slide 24 text

余談2: 認証に失敗するとステー タス401 が返されます。「 部外者 め」 ってことですね。 24

Slide 25

Slide 25 text

第六問 curl でWeb サイトにログインしてcookie 情報を保存する時に利用する コマンドはどれか? 「cookie.txt」 がcookie 情報を保存したファイルとする。 A:curl -a cookie.txt -d “user=user1” -d “pass=pass1” https://example.com/login B:curl -b cookie.txt -d “user=user1” -d “pass=pass1” https://example.com/login C:curl -c cookie.txt -d “user=user1” -d “pass=pass1” https://example.com/login 25

Slide 26

Slide 26 text

回答 C:curl -c cookie.txt -d “user=user1” -d “pass=pass1” https://example.com/login 26

Slide 27

Slide 27 text

解説 cookie 情報を保存する場合、「-c < ファイル名>」 を利用します。 「-b < ファイル名>」 は、cookie 情報を利用してURL にアクセスする 際に利用します。 「-a」 はcookie 情報に関係しません。 「-d “id 値= 値”」 はform の値を送信する際に利用します。 上記の例で はログイン時に利用するユー ザとパスワー ドを指定して送信してい ます。 27

Slide 28

Slide 28 text

第七問 コンソー ルでcsv ファイルをダウンロー ドする。 しかし、 別のペー ジ にリダイレクトされる可能性がある。 どちらのコマンドを選択する か? A:wget https://example.com/foo/bar.csv B:curl https://example.com/foo/bar.csv 28

Slide 29

Slide 29 text

回答 A:wget https://example.com/foo/bar.csv 29

Slide 30

Slide 30 text

解説 wget もcurl もWeb サイトのデー タ(html や任意のファイルなど) に アクセスしてその情報を取得できます。 wget の特徴としては、 デフォルトで「 再帰的」 にダウンロー ドして くれます。 一方、curl の場合にはデフォルトではリダイレクト先を辿ってくれま せん。 ただし、 オプションとして「-L」 を付与することで、 リダイレ クト先を追ってくれます。 30

Slide 31

Slide 31 text

第八問 wget コマンドを使って、 ダウンロー ドしたファイルの名前を変更し たい。 どちらのオプションを指定する? A:wget -O hoge.csv https://example.com/foo/bar.csv B:wget -o hoge.csv https://example.com/foo/bar.csv 31

Slide 32

Slide 32 text

回答 A:wget -O hoge.csv https://example.com/foo/bar.csv 32

Slide 33

Slide 33 text

解説 wget で取得したファイルを任意の名前で保存したい場合、「-O」( 大 文字のオー) をオプションに指定した後でファイル名を指定します。 「-o」( 小文字のオー) を指定した場合には、wget では処理経緯の情報 が、 指定したファイル名に格納されます。 ちなみに、curl でファイル名を保存する際には「-o」 を指定するので 混乱しがちです。 33

Slide 34

Slide 34 text

第九問 Apache HTTP Server の2.2 系。 あるディレクトリ配下はIP アドレスで 制限されている。 ここへ別のIP アドレスの設定を追加した。 Allow from 192.168.0.0/16 # 内部からアクセス許可 その後で実行するコマンドはどれか。 A:apachectl configtest B:apachectl configcheck C:apachectl restart 34

Slide 35

Slide 35 text

回答 A:apachectl con gtest 35

Slide 36

Slide 36 text

解説 このコマンドを実行すればapache の設定ファイルの内容が正しいか 書式チェックします。 設定変更後に実行してsyntax error がでないことを確認しましょう。 「con gcheck」 は存在しません。 36

Slide 37

Slide 37 text

余談 設定ファイル中でコメント行を示す「#」 は行の先頭以外に置くと syntax error となります。 特定のOS とapache のバー ジョンでは、 アクセス制限が無効になりど こからもアクセス可となるバグもありました。(cve-2017-12171) 37

Slide 38

Slide 38 text

第十問 CentOS 7 系でapache をyum でインストー ルした。 以下のコマンドと 同じ操作はどれか? 挙動としては「 緩やかな再起動」 が行われる。 # systemctl reload httpd A:httpd -k condrestart B:httpd -k reload C:httpd -k graceful 38

Slide 39

Slide 39 text

回答 C:httpd -k graceful 39

Slide 40

Slide 40 text

解説 「 緩やかな再起動」 といえば「graceful」 です。WEB サー ビスが停止 せず、 かつ実行中のリクエストを中止せずに、 設定情報を読み直して 反映させます。( できない設定もある) なお、reload は「 実行中のリクエストは中止」 されます。WEB サー ビスは停止されません。 「condrestart」 とは「conditional restart」 の意味です。 起動済みな ら停止後に起動しますが、 停止済みの場合は起動しません。 40

Slide 41

Slide 41 text

To be continued ... 41