orz.conf

技術メモ✍

ファイルディスクリプタ 2>&1

よく見かける2>&1の意味、ググらずにすぐに答えることは出来ますか?


標準エラー出力を標準出力にマージするという意味です。
何度も調べたことがあるかと思いますが、いきなり質問されるとどきっとしてしまいます。

標準入出力のファイルディスクリプタ
0→標準入力
1→標準出力
2→標準エラー出力

プロセスを実行すると上記のファイルディスクリプタが作成されます。


httpdのファイルディスクリプタを確認してみます。

まずはpidを確認
ps aux | grep httpd
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 17762 0.0 1.1 367636 12148 ? Ss Feb18 3:10 /usr/sbin/httpd


pidは17762と確認出来ました。
ファイルディスクリプタを確認します。

/proc/17762/fd配下にファイルディスクリプタがあります。

ls -l /proc/17762/fd

lr-x------ 1 root root 64 Mar 21 20:14 0 -> /dev/null
l-wx------ 1 root root 64 Mar 21 20:14 1 -> /dev/null
l-wx------ 1 root root 64 Mar 21 20:14 10 -> /var/log/httpd/access_log
l-wx------ 1 root root 64 Mar 21 20:14 11 -> /var/log/httpd/ssl_access_log
l-wx------ 1 root root 64 Mar 21 20:14 12 -> /var/log/httpd/ssl_request_log
lr-x------ 1 root root 64 Mar 21 20:14 13 -> /dev/urandom
l-wx------ 1 root root 64 Mar 21 20:14 2 -> /var/log/httpd/error_log
lrwx------ 1 root root 64 Mar 21 20:14 3 -> socket:[3608670]
lrwx------ 1 root root 64 Mar 21 20:14 4 -> socket:[3608671]
lrwx------ 1 root root 64 Mar 21 20:14 5 -> socket:[3608674]
lrwx------ 1 root root 64 Mar 21 20:14 6 -> socket:[3608675]
lr-x------ 1 root root 64 Mar 21 20:14 7 -> pipe:[3608682]
l-wx------ 1 root root 64 Mar 21 20:14 8 -> pipe:[3608682]
l-wx------ 1 root root 64 Mar 21 20:14 9 -> /var/log/httpd/ssl_error_log

httpdは標準出力は/dev/nullなので読み捨て、標準エラー出力は/var/log/httpd/error_log
となっているようです。

コマンド > /dev/null > 2>&1

これは標準エラー出力を標準出力にマージして読み捨てるということらしいです。

meltdownとSpectreの対応

CentOS6系のサーバで対応を行ってみました。

CVE-2017-5715
CVE-2017-5753
CVE-2017-5754

Spectreは幽霊とか怖いものといった意味だそうです。

現在のカーネルバージョンを確認

# uname -r

2.6.32-642.3.1.el6.x86_64

随分と古そうです。

早速更新処理

# yum update

完了したら再起動します。

# shutdown -r now

再起動後にバージョンを確認

2.6.32-696.18.7.el6.x86_64

MeltDown対策済みのバージョンになりました。

念の為以下も実行して確認。

# rpm -q --changelog kernel | egrep 'CVE-2017-5715|CVE-2017-5753|CVE-2017-5754'

数十のパッチが確認できました。


今回のアップデートと直接関係無いのですが、再起動後にsshだけ接続なくなってしまいました。

ポートを変更していたんですが、そのポートが空いて居ないようです。

iptablesの設定後に保存をしていなかったようです。

# service iptables save

iptablesの設定後は保存を忘れずに。


以下脆弱性の情報

www.cyberciti.biz

pubnubを使用して約定情報を得る

BitFlyerが提供しているRealtime APIを使用してリアルタイムに
約定情報を取得します。
動作はCentOS7上でnode.jsを使用します。

まずはインストール。
epelリポジトリを使用します。

yum -y install epel-release

続いてnodejsをインストール。

yum --enablerepo=epel install nodejs

そしてコードを書きます。

jsファイルを作ったディレクトリ上でpubnubのインストールコマンドを実行します。

npm install pubnub --save-dev

node_modulesディレクトリが作成されます。
中身は今回は気にしません。

そして実行。

node getRTYakutei.js

こんな感じに表示されます。

 61043317 BUY 426361 0.3 2017-09-23T10:39:39.9226427Z JRF20170923-073939-511591 JRF20170923-073938-685211
 61043318 SELL 426362 1 2017-09-23T10:39:40.0945199Z JRF20170923-073939-511591 JRF20170923-163938-379485
 61043319 SELL 426301 0.02 2017-09-23T10:39:41.5633084Z JRF20170923-073845-747593 JRF20170923-163939-321348
 61043320 SELL 426352 0.05 2017-09-23T10:39:42.7664744Z JRF20170923-073940-220626 JRF20170923-163941-542666

建玉情報を得る

BitFlyerのWebApiを使って建玉情報を取得してみます。
言語はPHPです。

アクセスキーとアクセスシークレットは当然自分のアカウントのものを使用します。
ログインして取得して下さい。

建玉の一覧を取得
クエリパラメータはproduct_code: "FX_BTC_JPY" を指定します。

と書いてあったのでpathには

/v1/me/getpositions/

に続き

?product_code=FX_BTC_JPY

を指定します。

またGETコマンドを使用しますが、29行目のようにCURLOPT_POSTFIELDSを使用します。

curl_execの結果が勝手に展開されてしまうので、その対策として
CURLOPT_RETURNTRANSFERをtrueの指定を入れて下さい。

※2017年9月26日 修正
gistのソースから無駄な行を削除しました。

sudoの脆弱性(CVE-2017-1000367)

sudoの脆弱性が報告されているんだけど、IPAのホームページに記載が無い。
現在2017/06/12で報告は2017/05/30。

危険度高って書いてあるサイトもあるので注意喚起しないレベルの
話では無いような気がするんだけど、どういった基準なのか分からない。

対応方法はCentOSなら下記

yum install sudo

アップデート前
sudo-1.8.6p7-17.el7_2.x86_64

アップデート後は次のようになりました。
sudo-1.8.6p7-22.el7_3.x86_64

参考サイト
Red Hat Customer Portal
tecadmin.net