書籍概要

Software Design 201611月号

バックナンバー一覧

発売日
更新日

概要

第1特集
新人のときに知っておきたかった
クラウドコンピューティングのしくみ

「クラウドコンピューティングのしくみを解説できますか?」そんな問いかけが本特集の始まりでした。新入社員の仕事が最初からクラウドというのも,もはや決して珍しい話ではありません。しかし,これだけ普及したにもかかわらず,そのしくみをわかりやすく解説しようとすると意外とできないものです。本特集では,若手エンジニアに向けて最前線で活躍する執筆者がクラウドのしくみ解説を書き下ろしました。これらの知識を深めることで,技術習得の手がかりを得てください。

第2特集
恐れずにリファクタリングをするために
レガシーコード改善実践録

本番稼働中の製品なのにバグだらけ。しかもコードのメンテナンス性が悪くて,別のバグを作り込まないかビクビクしながら修正を行う。日々のバグ対応に追われて,みんな疲弊……。そんな状況から,1つずつ安全にプログラムを改修し,着実に品質を向上させて,とうとうバグをゼロにした現場があります。高品質を達成するまでにはさまざまな工夫,取り組みがありました。

本特集では,その取り組みにかかわったエンジニアご自身に,過酷な状況の中から試行錯誤のすえに導き出したアイデアを紹介してもらいます。

一般記事
[次世代言語]Elixirの実力を知る――Phoenixで高機能Webアプリ開発(前編)
[関数型言語]Elixirのはじめ方

Rubyのような書き味で,簡単に並列処理が実装できる関数型プログラミング言語「Elixir」。とくに若手エンジニアの間で注目され,企業においても少しずつ採用がはじまっています。本記事では前後編で,Elixirの実力を確かめます。前編で扱うのはElixirの概要,環境準備,簡単なコーディングです。

短期集中連載
[短期集中連載]Jamesのセキュリティレッスン
【7】SSL/TLSの暗号化通信を復号してみよう!

Wiresharkを使ったパケットキャプチャへの理解を深める本連載。今回はSSL/TLSの暗号化通信を復号する方法についての解説です。

目次

第1特集
新人のときに知っておきたかった
クラウドコンピューティングのしくみ

  • 第1章:猫先生かく語りき
    そもそもクラウドって?…… 五十嵐 綾,堀内 晨彦
  • 第2章:これからクラウドする人に教えたい
    Amazon Web Servicesのシン・ノウハウ…… 多田 貞剛
  • 第3章:Linuxが動く! RedHatが動く!
    オープンソースとの親密度を深めるMicrosoft Azureのいま…… 戸倉 彩
  • 第4章:ベアメタルクラウドにはどんな利点がある?
    SoftLayerとBluemixを擁するIBM Cloudの強み…… 常田 秀明
  • 第5章:インフラの構築・運用はPaaSで省略
    スモールスタート&高速開発に最適なHeroku…… 織田 敬子
  • 第6章:ハードウェアからしっかり解説
    “仮想データセンター”を目指したさくらのクラウド…… 篠田 真一,宮堂 達也

第2特集
恐れずにリファクタリングをするために
レガシーコード改善実践録

  • 第1章:ソフトウェアを徐々に高品質にするコードの直し方…… 青木 翔
  • 第2章:効果的なテストを無理なく導入する方法…… 青木 翔
  • 第3章:漏れがなく負担も少ないコードレビューとは…… 青木 翔
  • 第4章:ログ監視で人が気づかないバグも発見・撲滅する…… 青木 翔
  • 第5章:高品質を目指すときに,心がけたいこと…… 青木 翔

一般記事

  • [次世代言語]Elixirの実力を知る――Phoenixで高機能Webアプリ開発(前編)
    [関数型言語]Elixirのはじめ方 …… 大原 常徳
  • [短期集中連載]Jamesのセキュリティレッスン
    【7】SSL/TLSの暗号化通信を復号してみよう! …… 吉田 英二

連載

  • 【新連載】及川卓也のプロダクト開発の道しるべ
    【1】Product Managerとは……及川 卓也
  • ITエンジニア必須の最新用語解説
    【95】BuckleScript……杉山 貴章
  • digital gadget
    【215】コンピュータグラフィックスの祭典SIGGRAPH 2016[後編]……安藤 幸央
  • 結城浩の再発見の発想法
    【42】デッドロック……結城 浩
  • [増井ラボノート]コロンブス日和
    【13】廃れるページ……増井 俊之
  • 宮原徹のオープンソース放浪記
    【9】OSunCリレー(川越→千葉→金沢)とAKB……宮原 徹
  • ツボイのなんでもネットにつなげちまえ道場
    【17】mbed OS 5での開発……坪井 義浩
  • アプリエンジニアのための[インフラ]入門
    【5】バージョン管理入門……出川 幾夫
  • 使って考える仮想化技術
    【6】仮想マシンの管理……笠野 英松
  • RDB性能トラブルバスターズ奮闘記
    【9】APIファースト・メソッドが可能にする「DB分離」の組織体制……生島 勘富,開米 瑞浩
  • Androidで広がるエンジニアの愉しみ
    【11】Android 7.0のセキュリティ……谷口 岳
  • Vimの細道
    【12】Vim使いの必需品 grep……mattn
  • ひみつのLinux通信
    【33】犯人は誰だ!?…… くつなりょうすけ
  • るびきち流Emacs超入門
    【31】Emacsの正規表現(基本編)……るびきち
  • 書いて覚えるSwift入門
    【20】Pokémon GO,iPhone 7,macOS(Sierra)……小飼 弾
  • Sphinxで始めるドキュメント作成術
    【20】Sphinx環境ひとめぐり――エディタ,ビルド,バージョン管理,公開……安宅 洋輔
  • 【最終回】Mackerelではじめるサーバ管理
    【20】Mackerelの生い立ちから思想,今後について…… 杉山 広通
  • セキュリティ実践の基本定石
    【37】ゼロデイ攻撃と脆弱性公開のリスクを考えてみる……すずきひろのぶ
  • SOURCES~レッドハット系ソフトウェア最新解説
    【4】Red Hat OpenShift Container Local part2……小島 啓史
  • Be familiar with FreeBSD~チャーリー・ルートからの手紙
    【36】タイムスケジュールでプログラムを実行(その3)……後藤 大地
  • Ubuntu Monthly Report
    【79】Network ManagerのVPNプラグイン…… あわしろいくや
  • Unixコマンドライン探検隊
    【7】ファイルの属性と権限,プロセスの所有……中島 雅弘
  • Linuxカーネル観光ガイド
    【56】Linux 4.2のlatched rbtreeとLSMのスタック化……青田 直大
  • Monthly News from jus
    【61】ITコミュニティ運営 関西ならではの課題・取り組みとは……榎 真治
  • Hack For Japan~エンジニアだからこそできる復興への一歩
    【59】第5回 石巻ハッカソン……高橋 憲一,小泉 勝志郎,及川 卓也
  • 温故知新 ITむかしばなし
    【60】リレー式計算機~カシオの実用的な最初の電子式卓上計算機~……速水 祐

サポート

補足情報

P.174「Unixコマンドライン探検隊 第7回」補足情報

(2016年10月18日更新)

ディレクトリとファイルのrwx bitsと削除

ちょっと複雑なので,誌面上に書ききれなかった,ファイル削除と権限の関係をまとめました。削除対象のファイルが存在しているディレクトリと,ファイルのアクセス権限によって,rmコマンドを実行したときの挙動を整理してあります。1つずつ確認してみてください。

下記の動作確認は,Ubuntu 16.04とmacOS 10.12でおこないました。

以下の操作はすべて,user=masa として実行


$ id -un
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行目のコメント

# すでに経過した天気情報は削除
こちら、不要なコメントです。

商品一覧