概要
第1特集
新人のときに知っておきたかった
クラウドコンピューティングのしくみ
「クラウドコンピューティングのしくみを解説できますか?」そんな問いかけが本特集の始まりでした。新入社員の仕事が最初からクラウドというのも,もはや決して珍しい話ではありません。しかし,これだけ普及したにもかかわらず,そのしくみをわかりやすく解説しようとすると意外とできないものです。本特集では,若手エンジニアに向けて最前線で活躍する執筆者がクラウドのしくみ解説を書き下ろしました。これらの知識を深めることで,技術習得の手がかりを得てください。
第2特集
恐れずにリファクタリングをするために
レガシーコード改善実践録
本番稼働中の製品なのにバグだらけ。しかもコードのメンテナンス性が悪くて,別のバグを作り込まないかビクビクしながら修正を行う。日々のバグ対応に追われて,みんな疲弊……。そんな状況から,1つずつ安全にプログラムを改修し,着実に品質を向上させて,とうとうバグをゼロにした現場があります。高品質を達成するまでにはさまざまな工夫,取り組みがありました。
本特集では,その取り組みにかかわったエンジニアご自身に,過酷な状況の中から試行錯誤のすえに導き出したアイデアを紹介してもらいます。
一般記事
[次世代言語]Elixirの実力を知る――Phoenixで高機能Webアプリ開発(前編)
[関数型言語]Elixirのはじめ方
Rubyのような書き味で,簡単に並列処理が実装できる関数型プログラミング言語「Elixir」。とくに若手エンジニアの間で注目され,企業においても少しずつ採用がはじまっています。本記事では前後編で,Elixirの実力を確かめます。前編で扱うのはElixirの概要,環境準備,簡単なコーディングです。
短期集中連載
[短期集中連載]Jamesのセキュリティレッスン
【7】SSL/TLSの暗号化通信を復号してみよう!
Wiresharkを使ったパケットキャプチャへの理解を深める本連載。今回はSSL/TLSの暗号化通信を復号する方法についての解説です。
サポート
補足情報
P.174「Unixコマンドライン探検隊 第7回」補足情報
(2016年10月18日更新)
ディレクトリとファイルのrwx bitsと削除
ちょっと複雑なので,誌面上に書ききれなかった,ファイル削除と権限の関係をまとめました。削除対象のファイルが存在しているディレクトリと,ファイルのアクセス権限によって,rmコマンドを実行したときの挙動を整理してあります。1つずつ確認してみてください。
下記の動作確認は,Ubuntu 16.04とmacOS 10.12でおこないました。
以下の操作はすべて,user=masa として実行
== [自分の所有するディレクトリに対して] ==
1. ディレクトリに書き込み権限があり,自分のファイルに書き込み権限がある場合
$ ls -la
total 0
drwxr-xr-x 3 masa staff 102 10 4 11:11 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 masa staff 0 10 4 11:11 a
$ rm a
# 確認もなく,削除成功!
|
2. ディレクトリに書き込み権限があり,自分のファイルに書き込み権限がない場合
$ ls -la
total 0
drwxr-xr-x 3 masa staff 102 10 5 13:13 .
drwxr-xr-x 75 masa staff 2550 10 5 13:12 ..
-r--r--r-- 1 masa staff 0 10 5 13:13 a
$ rm a
override r--r--r-- masa/staff for a? y
# 確認後,削除成功!
|
3. ディレクトリに書き込み権限がなく,自分のファイルに書き込み権限がある場合
$ ls -la
total 0
dr-xr-xr-x 3 masa staff 102 10 5 13:36 .
drwxr-xr-x+ 75 masa staff 2550 10 5 13:12 ..
-rw-r--r-- 1 masa staff 0 10 5 13:36 a
$ rm a
rm: a: Permission denied
# 削除失敗!
|
4. ディレクトリに書き込み権限がなく,自分のファイルに書き込み権限がない場合
$ ls -la
total 0
dr-xr-xr-x 3 masa staff 102 10 4 11:11 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-r--r--r-- 1 masa staff 0 10 4 11:11 a
$rm a
rm: a: Permission denied
override r--r--r-- masa/staff for a? y
# 確認後,削除失敗!
|
5. ディレクトリに書き込み権限があり,他人のファイルに書き込み権限がある場合
$ ls -la
total 0
drwxr-xr-x 3 masa staff 102 10 5 13:39 .
drwxr-xr-x+ 75 masa staff 2550 10 5 13:12 ..
-rw-rw-rw- 1 root staff 0 10 5 13:39 a
$ rm a
# 削除成功!
|
6. ディレクトリに書き込み権限があり,他人のファイルに書き込み権限がない場合
$ ls -la
total 0
drwxr-xr-x 3 masa staff 102 10 4 11:07 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 root staff 0 10 4 11:07 a
$ rm a
override rw-r--r-- root/staff for a? y
# 確認の後,削除成功!
|
7. ディレクトリに書き込み権限がなく,他人のファイルに書き込み権限がある場合
$ ls -la
total 0
dr-xr-xr-x 3 masa staff 102 10 4 11:07 .
dr-xr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-rw-rw- 1 root staff 0 10 4 11:07 a
$ rm a
rm: a: Permission denied
# 削除失敗!
|
8. ディレクトリに書き込み権限がなく,ファイルにも書き込み権限がない場合
$ ls -la
total 0
dr-xr-xr-x 3 masa staff 102 10 4 11:03 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 root staff 0 10 4 11:03 a
$ rm a
override rw-r--r-- root/staff for a? y
rm: a: Permission denied
# 確認の後,削除失敗!
|
== [他人の所有するディレクトリに対して] ==
9. ディレクトリに書き込み権限があり,自分のファイルに書き込み権限がある場合
$ ls -la
total 0
drwxrwxrwx 3 root staff 102 10 4 11:11 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 masa staff 0 10 4 11:11 a
$ rm a
# 確認もなく,削除成功!
|
10. ディレクトリに書き込み権限があり,自分のファイルに書き込み権限がない場合
$ ls -la
total 0
drwxr-xr-x 3 root staff 102 10 4 11:11 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-r--r--r-- 1 masa staff 0 10 4 11:11 a
$rm a
override r--r--r-- masa/staff for a? y
# 確認の後,削除成功!
|
11. ディレクトリに書き込み権限がなく,自分のファイルに書き込み権限がある場合
$ ls -la
total 0
dr-xr-xr-x 3 root staff 102 10 5 13:39 .
drwxr-xr-x 75 masa o staff 2550 10 5 13:12 ..
-rw-r--r-- 1 masa staff 0 10 5 13:39 a
$ rm a
rm: a: Permission denied
# 削除失敗!
|
12. ディレクトリに書き込み権限がなく,自分のファイルに書き込み権限がない場合
$ ls -la
total 0
dr-xr-xr-x 3 root staff 102 10 5 13:39 .
drwxr-xr-x 75 masa staff 2550 10 5 13:12 ..
-r--r--r-- 1 masa staff 0 10 5 13:39 a
$ rm a
override r--r--r-- root/staff for a? y
rm: a: Permission denied
# 確認の後,削除失敗!
|
13. ディレクトリに書き込み権限があり,ファイルに書き込み権限がある場合
$ ls -la
total 0
drwxrwxrwx 3 root staff 102 10 4 11:07 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-rw-rw- 1 root staff 0 10 4 11:07 a
$ rm a
# 削除成功!
|
14. ディレクトリに書き込み権限があり,ファイルに書き込み権限がない場合
$ ls -la
total 0
drwxrwxrwx 3 root staff 102 10 4 11:07 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 root staff 0 10 4 11:07 a
$ rm a
override rw-r--r-- root/staff for a? y
# 確認の後,削除成功!
|
15. ディレクトリに書き込み権限がなく,ファイルに書き込み権限がある場合
$ ls -la
total 0
drwxr-xr-x 3 root staff 102 10 5 14:09 .
drwxr-xr-x+ 75 masa staff 2550 10 5 13:12 ..
-rw-rw-rw- 1 root staff 0 10 5 14:09 a
$ rm a
rm: a: Permission denied
# 削除失敗!
|
16. ディレクトリに書き込み権限がなく,ファイルにも書き込み権限がない場合
$ ls -la
total 0
drwxr-xr-x 3 root staff 102 10 4 11:03 .
drwxr-xr-x 75 masa staff 2550 10 4 11:03 ..
-rw-r--r-- 1 root staff 0 10 4 11:03 a
$ rm a
override rw-r--r-- root/staff for a? y
rm: a: Permission denied
# 確認の後,削除失敗!
|
まとめ
長くなりましたが,結果を表にまとめておきます。表を眺めてみると,挙動が明らかになりますね。
クリックすると画像を大きく表示できます。
他人に消されては困るファイルは,ファイルの存在するディレクトリへの書き込み権限を落としましょう。
ファイルに対しての書き込み権限を落としてあると,削除時に確認プロンプトが出るようになります。
sticky bitのあるディレクトリに対するファイルの削除の例
sticky bit付きのディレクトリ中のファイルの削除の例も掲載しておきます。
== [他人の所有するstickyが立ったディレクトリにに対して] ==
書き込み権限があるファイルを削除をする
$ ls -la
total 0
drwxrwxrwt 4 root staff 136 10 5 12:31 .
drwxr-xr-x 75 masa staff 2550 10 5 12:28 ..
-rw-rw-rw- 1 root staff 0 10 5 12:31 a
$ rm a
rm: a: Permission denied
# ディレクトリへの書き込み権限があっても,削除できない
|
自分が所有する書き込み権限があるファイルを削除をする
$ ls -la
total 0
drwxrwxrwt 4 root staff 136 10 5 12:31 .
drwxr-xr-x 75 masa staff 2550 10 5 12:28 ..
-rw-r--r-- 1 masa staff 0 10 5 12:31 b
$ rm b
rm: b: Permission denied
# 自分のファイルなら削除できる
|
正誤表
本書の掲載内容に下記の誤りがございました。読者の皆様,および関係者の方々にご迷惑をおかけしましたことをお詫び申し上げます。
(2018年5月11日最終更新)
P.177 連載「Unixコマンドライン探検隊」の「STEP UP!」囲み内,2行目
誤 |
/etc/passwd 注7、/etc/shadow、
|
正 |
/etc/passwd、/etc/shadow 注7、
|
P.177 連載「Unixコマンドライン探検隊」の「STEP UP!」囲み内,2行目
誤 |
/etc/group/etc/gshadow 注8
|
正 |
/etc/group、/etc/gshadow 注8
|
(以下2016年11月8日更新)
連載「チャーリー・ルートからの手紙 第36回
P.167リスト1 22行目のコメント
誤 |
# すでに経過した天気情報は削除 |
正 |
こちら、不要なコメントです。 |