apache2.2系で実体のないディレクトリ、例えばWordPressで生成される下位ディレクトリ https://todoya.net/hoge/ みたいな所のアクセス制御を行う必要がありました。
conf側でやるのが正道なのでしょうが、どーーーしてもhtaccessでやる必要があった場合のメモ。
カテゴリーアーカイブ: IT
WordPressのREST APIを無効化した話
WordPressは4.7系よりREST APIをサポートしているらしいですが、無効化されているものだと思って放置していた所、全世界に公開されているという悲しい状況になっていたのでそのメモ。
WP REST APIのAPIルートは https://example.com/wp-json/ と認識しておりまして、そこを叩いても無反応だったのでデフォルトOFFになっているものだと勘違いしていました。
ただこのURI、WordPressのパーマリンクを有効にしないと叩けないものらしく、叩けないから無効になっているかと思っていたら、API自体は別に無効になっていなかったというのが今回のお話。
https://example.com/?rest_route=/ だと普通に叩ける状況でした。
https://example.com/?rest_route=/wp/v2/users/ からユーザ名が取得できてしまう状態。ひええ。
現在はdisable REST APIプラグインを導入して無効化済み。
このプラグインもAPIを完全に殺すのではなく、ログインしていない状態でのアクセスを拒否するだけのようなのには注意が必要そう。というかログインしたまま動作確認して、プラグイン有効になってるのにAPI叩ける!なんで!!!って10分ぐらい悩みました。
いや、API真面目に使うのだったら当然そうなりますよねという話ではありますが、私がアホ過ぎる。
どうでもいいのですけど、WordPress的にはログイン名って特に隠す必要性感じていないのでしょうか。
APIで垂れ流されてるのがデフォなのもそうですし、authorページでもサクッと表示出来てしまいますし。
ログイン情報の一つではあるので積極的に表に出すスタイルはちょっと気持ち悪いなと思う今日このごろでした。
apacheのアクセスログを調べる時に使うコマンドのコピペメモ
apacheのログからアクセス傾向を調べたりすることがちょいちょいあるのですが、その際に使うコマンドをいちいち書くのがめんどくさくなってきたのでメモ。
awkで何番目持ってくるんだっけとか、cutでどこ削るんだっけとか数える手間。
私が使っている環境はだいたいdailyでログローテートするように設定しているので、他の環境だと日付でgrepして絞り込む必要がありそう。
(デフォルト設定だとweeklyだったはず)
// IPごと上位5件 cat access_log | awk '{print $1}' | sort | uniq -c | sort | tail -5 // リクエストごと上位5件 cat access_log | awk -F\" '{print $2}' | sort | uniq -c | sort | tail -5 // リファラごと上位5件 cat access_log | awk -F\" '{print $4}' | sort | uniq -c | sort | tail -5
// 時間ごと cat access_log | awk '{print $5}' | grep "2017:..:..:.." | cut -b 14-15 | sort | uniq -c // 分ごと cat access_log | awk '{print $5}' | grep "2017:10:..:.." | cut -b 17-18 | sort | uniq -c // 秒ごと cat access_log | awk '{print $5}' | grep "2017:10:10:.." | cut -b 20-21 | sort | uniq -c
よく使うのはこの辺。
ログファイルをパイプで流し込まずにawkで直接開かせてもいいのですが、コマンドの先頭で明示的にファイル開いた方が視認性良かったり対象変更しやすかったりで楽に思うのでこんな感じで。
リクエスト毎、リファラ毎はダブルクォーテーションで括られているので取り出しやすくて良い感じ。
逆に他の要素拾ってこようとすると面倒くさそう。あまり必要になったこともないですけど。
時間ごとはdailyローテートでやってるので横着してますが、weeklyローテートだと 03/Oct/2017:mm:ss といった形でgrepかけないと日付特定できなくていやん。
今度使う時はここからコピペしよう。
ログの吐き出し方が違っている環境に入った時も少し弄るだけでなんとかなるはず。
linux環境でディレクトリ配下の最新更新ファイルを把握したい
タイトル通りでして、ディレクトリ配下(サブディレクトリ配下含む)のファイルの中から、最新の更新ファイルを調べる必要が出てきました。
カレントから調べるならlsとsortを繋いで終了なのですが、サブディレクトリも調べるとなると少々厄介。
この程度の処理にシェルスクリプト書くのも面倒なので、一撃で終えられるようコマンド繋げましたのでそのメモ。
結論
find ./ -type f -print0 | xargs --null -i ls -l --time-style=long-iso "{}" | sort -k 6,7 | tail -1
以上。これで最新の更新ファイルが一個だけ出力されるはず。
お行儀の良い所ならもうちょいシンプルに以下でも可。
find ./ -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1
何をしているのか
find ./ -type f
findコマンドでカレント以下からファイル形式のものだけを検索。
find ./ -type f | xargs ls -l
findで引っ掛けたファイル一覧をlsコマンドでタイムスタンプ出力。
find ./ -type f | xargs ls -l --time-style=long-iso
そのままだとソートに不便なので、日付の形式を変更。
find ./ -type f | xargs ls -l --time-style=long-iso | sort -k 6,7
年月日と時刻でソート。
find ./ -type f | xargs ls -l --time-style=long-iso | sort -k 6,7 | tail -1
最新のファイルのみを表示。
find ./ -type f -print0 | xargs --null -i ls -l --time-style=long-iso "{}" | sort -k 6,7 | tail -1
findとxargsの区切り文字をnull文字にし、lsコマンドで扱えるようにする。
参考サイト
http://takuya-1st.hatenablog.jp/entry/2014/05/07/014251
http://sea-otter-factory.blogspot.jp/2008/07/unix-xargs.html
Netappの7modeからcDOTにsnapmirror転送をかけてみた
Netappでsnapmirror転送をかける時。
7modeではsnapmirror.accessで許可設定が必要で、
cDOTではクラスタピア関係を結ぶ必要があるわけです。
じゃあ7modeからcDOTはどうするのかといった所を調べつつ転送してみたので記載。
こちらのマニュアル参考に進めました。
ONTAP(8.1.3P1 7-Mode)から、同じLAN上に存在するcDOT(9.1)への移行するといった形。
移行元も移行先も元々snapmirrorに使っていたのでlifやらなんやらの設定は出来ていた状況から始まってます。
::> network ping -node dst_node -destination 192.168.100.100
そんな訳でいきなりping打って疎通確認。192.168.100.100が転送元NetappのIPですね。
::> volume create -vserver dst_svm -volume dst_vol -aggregate aggr1 -size 1TB -type DP
ボリューム作成はいつも通り。
::> vserver peer transition create -local-vserver dst_svm -src-filer-name 192.168.100.100
そしてここ、クラスタピアではなく、移行ピア関係の作成。こんなのがあったのか。
マニュアルに載ってるオプションを2つほど省略してしまっていますが。
-multi-path-address は移行元が複数のIPを持っている場合なのかな。よくわからず。
lifはいくつも作っている訳ではないのでさっくり省略。
::> snapmirror create -source-path 192.168.100.100:src_vol -destination-path dst_svm:dst_vol -type TDP
移行ピア関係が結べたら、snapmirror関係作成。
7modeからの移行をする際にはtypeをTDPにする必要があるとのことで注意。
::> snapmirror initialize -destination-path dst_svm:dst_vol
後は普通に初期転送実施すれば転送完了。
わーい、思ってたより遥かに簡単。
::> snapmirror modify -destination-path dst_svm:dst_vol -schedule daily
スケジュール設定も行けるっぽいので安心。
ただ、GUIで 保護->関係 で表示される一覧にsnapmirror関係が表示されてないのが気になる所であります。
::> snapmirror show だと確認できるので問題ないっちゃ無いのですが。