いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.098 / 読者数:1022名

こんばんは、うすだです。

先週、初心者のかた向けに回帰しますよ的宣言をしたところ、 たくさんのご感想をいただきました。

ありがとうございます。ありがとうございます。
みなさんの熱烈な励ましに、7回泣きました。とても勇気づけられました。

 

 

…すみません、本当は、感想をいただいたのは1通だけでした。
(お送りいただいた I さん、ものすごくありがとうございました!)

 

とはいえ、読者数が減らず、いつもよりちょびっと増えたという事実を、 斜めに直視しますと、おおむねご賛同いただけたと判断していいのかな、 などと思っております。(ポジティブ思考で。)

ですので、今後も、この路線でつっ走ってまいりたいと思います。
いろいろ思うこともあるかと存じますが、よろしくお願いいたします。
(思うことがあったら、お気軽にメールしてくださいまし。)

それでは、先週に引続き、今週も、はりきってまいりましょう!

今週のお題 - パスワード変更していない日数をチェックする

普段、何気なく、ユーザ名とパスワードを入力して、 Linux マシンなどにログインしていますが、よく考えますと、パスワードは、 そのユーザだということを証明する唯一の証拠だと言えます。たぶん。

そんな大事なものであるにも関わらず、最初にパスワードを設定すると、 ずっとそのまま使い続けている貴兄が、多いのではないかと推測します。

しかし、パスワードを変更する習慣を身につけておかないと、 /etc/shadow が漏洩したときに、パスワードを解読され、 電光石光のごとく侵入されるということが、現実に起こってしまうかもしれません。

 

さて、以前、chage というコマンドで、パスワードの有効期間を設定し、 パスワード変更を強制的に行ってもらうという封建的手法を、 ご紹介したことがあります。

Vol.036 - パスワードを管理する
http://www.usupi.org/sysad/036.html

chage を用いて、適切な期間を設定すれば、 強制的にパスワード変更してもらうことができます。

しかし、所属する組織の方針に合わないとか、 コンセンサスが得られないなどの理由により、 適用できないということも十分考えられます。

とはいえ、適用できないからといって放置するわけにもいきませんよね。
というわけで、今週は、ユーザ各位の、 パスワード変更していない日数をチェックする方法について、ご紹介したいと思います。


パスワード変更に関する情報がどこにあるのか、と言いますと、 さきほどちらっと出てきた、/etc/shadow に記述されています。

せっかくですので、shadow ファイルの内容を確認しておきましょう。
大雑把に述べますと、1行につき1人分の情報で、 それぞれに以下の情報が格納されています。

  ユーザ名
  (暗号化された)パスワード
  最後にパスワードが変更された日(1970年1月1日からの日数)
  パスワードが変更可能となるまでの日数
  パスワードを変更しなくてはならなくなるまでの日数
  パスワードの有効期限が来る前に、警告を発する日数
  パスワードの有効期限が過ぎてから使用不能になるまでの日数
  アカウントが使用不能になるまでの日数(1970年1月1日からの日数)
  予約フィールド

実際の shadow ファイルは、たとえばこんな感じです。

  # cat /etc/shadow
  root:秘密:13572:0:99999:7:::
  bin:*:13257:0:99999:7:::
  ...後略...

各フィールドが、: で区切られていますね。
3つ目のフィールドが、パスワードを変更した日ですので、 今日からそのフィールドの値を引けば、パスワード変更していない日数が計算できる、 という寸法です。


しかし、そのためには、 1970年1月1日から今日までの日数がわからないといけませんよね。
日数ではなく、秒数であれば、date コマンドでわかります。

  % date +%s
  1174756224

引数に +%s を指定すると、 1970年1月1日午前0時0分0秒から今までの秒数を出力してくれます。 (他にもさまざまなフォーマットで出力してくれますが、 詳しくはオンラインマニュアル(man date)などをご覧ください。)

ですので、得られた秒数を 60*60*24 で割れば、日数になります。

  % expr 1174756224 / 60 / 60 / 24
  13596

1970年1月1日から今日まで、13596日を経過している、 ということが計算できました。
ちなみに、これをまとめて実行するなら、以下のようにします。

  % expr `date +%s` / 60 / 60 / 24
  13596

それでは、shadow ファイルを読み込み、 パスワード変更していない日数を計算するスクリプトを、作ってみましょう。

  #!/bin/sh
  TODAY=`expr \`date +%s\` / 60 / 60 / 24`
  IFS=:
  while read name pwd lstchg min max warn inact expire reserved; do
      echo "$name : `expr $TODAY - $lstchg`"
  done < /etc/shadow

まず、今日の日数を、変数 TODAY に格納しています。
そして、shadow ファイルを読み込み、 パスワード変更していない日数をひとつずつ計算して出力しています。
これを実行しますと、以下のような出力が得られます。

  root : 24
  bin : 339
  daemon : 339
  ...後略...

ただ、これでは、もともとパスワードを設定していないユーザの結果も、 出力されてしまいます。
ですので、パスワードフィールドが、* や !! の場合、 パスワードが設定されていないとみなして、 それ以外のユーザの結果だけを出力するようにしてみましょう。

  #!/bin/sh
  TODAY=`expr \`date +%s\` / 60 / 60 / 24`
  IFS=:
  while read name pwd lstchg min max warn inact expire reserved; do
      if [ "$pwd" != '*' -a "$pwd" != '!!' ]; then
          echo "$name : `expr $TODAY - $lstchg`"
      fi
  done < /etc/shadow

こうすると、パスワードを設定しているユーザの結果だけが得られます。

  root : 24
  usu : 48
  kentarou : 7
  jin : 125

しかし、たくさんユーザさんがいる組織では、出力が大量になってしまいそうです。 ですので、最近パスワード変更したひとの情報は、この際省略してしまいましょう。

  #!/bin/sh
  [ $# -eq 1 ] && NOCHANGE=$1 || NOCHANGE=30
  TODAY=`expr \`date +%s\` / 60 / 60 / 24`
  LIMIT=`expr $TODAY - $NOCHANGE`
  IFS=:
  while read name pwd lstchg min max warn inact expire reserved; do
      if [ "$pwd" != '*' -a "$pwd" != '!!' -a $lstchg -le $LIMIT ]; then
          echo "$name : `expr $TODAY - $lstchg`"
      fi
  done < /etc/shadow

30日前の日数を変数 LIMIT に代入し、if 文に、 その値以下であるという条件を追加しています。
これを実行すると、30日以上パスワード変更していないユーザだけを出力します。

  usu : 48
  jin : 125

引数に数値を指定すると、 その日数以上パスワード変更していないユーザだけを出力します。 (デフォルトが30日ってことです。)


以上、しばらくパスワード変更していないユーザをチェックする方法を、 ご紹介しました。

出力結果を Mail コマンドに渡してメールで報告させたりなど、 いろいろ応用が考えられそうですね。
ただ、メールの場合、相手以外の誰かに見られる可能性があるということを考慮して、 あまり情報を盛り込まないようにすべきだと思います。

宿題の答え

先週の宿題は、

  ホームの残りの空き容量が、指定された kB 以下のときに、ホーム以下
  の各ディレクトリの使用量をメールするスクリプトを作りましょう。

でした。

まず、空き容量を得るには、-k オプションをつけて df コマンドを実行し、 2行目の出力の4番目の文字列(数字)を取り出せば、よさそうです。

  # df -k /home
  Filesystem         1K-blocks      Used Available Use% Mounted on
  /dev/hda2           76095208  68881044   3348736  96% /

2行目だけにするには、先週と同様 tail コマンドを用います。

  # df -k /home | tail -1
  /dev/hda2           76095208  68881044   3348736  96% /

さらに、4番目の文字列を取り出すために、awk コマンドを用います。

  # df -k /home | tail -1 | awk '{print $4}'
  3348736

awk コマンドはいろいろできるひとなのですが、 ここでは4番目の文字列を取り出すためだけに使うという、 ゼイタクなことをしています。

というわけで、答の例を示します。

  #!/bin/sh
  [ $# -ge 1 ] && HOMEDIR=$1 || HOMEDIR="/home"
  [ $# -eq 2 ] && HOMETHR=$2 || HOMETHR=524288
  HOMEFREE=`df -k $HOMEDIR | tail -1 | awk '{print $4}'`
  if [ $HOMEFREE -le $HOMETHR ]; then
      du -sk $HOMEDIR/* | sort -nr
  fi

デフォルトでは、/home の属するファイルシステムの空き容量が、 512MB(524288kB)以下になったら、使用量を計測して出力します。

話は変わりますが、トップ10の結果だけでいいよっていう場合は、 if 文の中を以下に差し替えましょう。

      du -sk $HOMEDIR/* | sort -nr | head -10

お察しの通り、数字を変えれば、トップ3とかトップ40にできます。

今週の宿題

今週の宿題は、

  しばらくパスワードを変更していないユーザに、その旨をメールで通知
  しましょう。

です。

パスワード変更していないユーザの一覧を出力していましたが、それだけだと、 ちょっと積極性に欠けるように思います。
ですので、パスワード変更を怠っていることを、 各ユーザにメールで連絡するっていうのは、いかがでしょうか。
実際に仕込むかどうかは別にして、まずはそういうモノを作ってみたいと思います。

あとがき

今週は、「クロフォードのインタラクティブデザイン論」の後遺症もありましたので、 以下の新書をさらっと読んでみました。
(後遺症=ボリュームがあった、というだけのことですが。)

頭がよくなる照明術
http://www.amazon.co.jp/exec/obidos/ASIN/4569657745/usupiorg06-22

ものすごく要約しますと、蛍光灯による青白い光に、上から直接照らされていると、 ずっと緊張してしまいますので、 オレンジ色の間接照明を有効に使ってリラックスしましょう、という内容でした。

とにかく、照明が人間に与える影響の大きさに、びっくりしました。
それだけではなく、仕事や普段の生活に、 照明を効果的に使って改善する方法がていねいに紹介されていて、 面白かったです。
(中には、明らかに照明と関係のない方法も載っていますが…。)

個人的には、障子や金屏風、玉砂利など、日本に昔からあるものが、 自然の光を有効に使っているという話が、興味深く感じました。
電気のない時代であれば、そう考えるのが自然という気もしますが、 それを差し引いても、よく思いつくもんだなあと、感銘を受けました。

新書だからだと思いますが、さらっと読めます。
興味のあるかたは、出張の際などに、読んでみてくださいませ。

 

さて、来週の 4/1 は、個人的な事情(?)により、お休みとさせていただきます。
申し訳ありませんが、ご了承ください。

 

今週も、ここまで読んでいただき、ありがとうございました。
それでは、また来週…じゃなくて来々週に、お会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」−今日もこれから描きます。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://www.fumido.co.jp/kuriniki/ (栗日記ぎゃらりー)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 5 をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューションや、Solaris10の例も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora8)
Fedora8のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日本の Linux 情報
日本の、Linux 総本山的なところです。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
Open Tech Press
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん





▼ 最近読んだ本

ハリー・ポッターと不死鳥の騎士団 ハリー・ポッターと不死鳥の騎士団
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと炎のゴブレット ハリー・ポッターと炎のゴブレット
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターとアズカバンの囚人 ハリー・ポッターとアズカバンの囚人
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと秘密の部屋 ハリー・ポッターと秘密の部屋
J.K.Rowling
  ハリポ月刊なので読み直してます
ハリー・ポッターと賢者の石 ハリー・ポッターと賢者の石
J.K.Rowling
  ハリポ月刊なので読み直してます
アルケミスト アルケミスト
パウロ・コエーリョ
  また読んだ
賢者の書 賢者の書
喜多川 泰
  違った視点から見られてよかった
セキュリティウォリア セキュリティウォリア
Cyrus Peikari, Anton Chuvakin
  やや冗長…ためにはなりました
CORE MEMORY CORE MEMORY
John Alderman, Mark Richards
  この筐体でPC作ってほしい!
新訳 星の王子さま 新訳 星の王子さま
サン=テグジュベリ
倉橋 由美子
  つまらない大人になったのか…
.....

[X]
「センネン画報」 今日 マチ子
「粟津潔 デザインする言葉」 粟津潔
「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸
「Make: Volume01」 オライリー・ジャパン
「セーラが町にやってきた」 清野 由実
「手紙屋」 喜多川 泰
「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久
「人蕩し術」 無能 唱元
「子育てハッピーアドバイス2」 明橋 大二, 太田 知子
「ラッセル幸福論」 B. Russell
「それでも人生にイエスと言う」 Viktor Emil Frankl
「子育てハッピーアドバイス」 明橋 大二, 太田 知子
「考具」 加藤 昌治
「北欧デザイン<3>」 渡部 千春
「北斎の謎を解く」 諏訪 春雄
「体感美術館」 平野 暁臣
「チベット永遠の書」 Theodore Illion
「リナックスの革命」 Pekka Himanen
「人月の神話」 Frederick Phillips,Jr. Brooks
「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner
「小布施ッション<2001-2002>」 セーラ・マリ カミングス
「アンパンマン伝説」 やなせ たかし
「夢をかなえるゾウ」 水野 敬也
「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann
「北欧デザイン<2>」 渡部 千春
「北欧デザイン<1>」 渡部 千春
「ヒューマン2.0」 渡辺 千賀
「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯
「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦
「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき
「デザインのデザイン」 原 研哉
「マキアヴェッリ語録」 塩野 七生
「ハンバーガーを待つ3分間の値段」 斎藤 由多加
「星の旅人-スペイン「奥の細道」-」 黛 まどか
「食品の裏側」 安部 司
「On Lisp」 Paul Graham
「ぼくが医者をやめた理由 つづき」 永井 明
「あなたならどうする?」 Jack Nikolaschka
「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」
      Mark G. Graff, Kenneth R. van Wyk
「「左利き」は天才?−利き手をめぐる脳と進化の謎
      David Wolman
「自分の中に毒を持て」 岡本 太郎
「アトピーの薬を減らす本」 田中 貴子
「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留
「X51.ORG THE ODYSSEY」 佐藤 健寿
「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子
「沖縄文化論」 岡本 太郎
「「伝説の社員」になれ!」 土井 英司
「コンピュータの構成と設計(上)」 Patterson & Hennessy
「カラスのジョンソン」 明川 哲也
「ドリルを売るには穴を売れ」 佐藤 義典
「頭がよくなる照明術」 結城 未来
「クロフォードのインタラクティブデザイン論」 Chris Crawford
「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso
「非常識のすすめ―逆発想の仏教論」 ひろさちや
「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」
      デージーネット
「イノベーションの達人!」 Tom Kelly, Jonathan Littman
「クリエーター50人が語る創造の原点」 小原 啓渡
「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick
「楽しい気象観察図鑑」 武田 康男
「入門 Ajax」 高橋 登史朗
「リリカルな自画像」 岡本 太郎
「やぎの目ゴールデンベスト」 林 雄司
「初めてのPython 第2版」 Mark Lutz,David Ascher
「鼻兎」 小林 賢太郎
「なぜ、これがアートなの?」 Amelia Arenas
「芸術起業論」 村上 隆
「まほう色の瞳」 Enrique Barrios
「ラーメンズつくるひとデコ」 ラーメンズ
「R25 つきぬけた男たち」 R25編集部
「美の呪力」 岡本 太郎
「しろのあお」 上大岡 トメ
「ザ・ゴール」 Eliyahu M. Goldratt
「ハッカーと画家」 Paul Graham
「岡本太郎に乾杯」 岡本 敏子
「Fedore Core Expert」 Software Design
「誰も知らない男」 ブルース・バートン
「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト
「国家の罠」 佐藤 優
「夜回り先生」 水谷 修
「やぎの目絵日記」 林 雄司
「7つの習慣」 スティーブン・R. コヴィー
「まろ、ん?−大掴源氏物語」 小泉 吉宏
「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル
「ポストモダン・マーケティング」 スティーブン ブラウン
「機動戦士ガンダムさん」 大和田 秀樹
「小エロのひみつ - Webやぎの目研究発表」 林 雄司
「これ、誰がデザインしたの?」 渡部千春
「60分間・企業ダントツ化プロジェクト」 神田 昌典
「ガルシアへの手紙」 エルバート ハバード
「人生は素晴らしいものだ」 オグ・マンディーノ
「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン
「ワインバーグのシステム思考法」 G.M.ワインバーグ
「渋谷ではたらく社長の告白」 藤田 晋
「渋井真帆の日経新聞読みこなし隊」 渋井 真帆
「コラム息切れ」 小野 法師丸
「早朝起業」 松山 真之介
「変な人が書いた驚くほどツイてる話」 斎藤 一人
「35歳から仕事で大切にしたいこと」 村井 勉
「金融広告を読め」 吉本 佳生
「発想する会社!」 トム・ケリー,ジョナサン・リットマン
「エハイク」 吉田 戦車
「人生の旋律」 神田 昌典
「仕事の思想」 田坂 広志
「CPUの創りかた」 渡波 郁
「非常識な成功法則」 神田 昌典
…これ以前は記録してません…

▼ 気に入ってる本

夢をかなえるゾウ 夢をかなえるゾウ
水野 敬也
  いままでで最高の「笑える」成功本
Linuxデバイスドライバ Linuxデバイスドライバ
Alessandro Rubini,
Jonathan Corbet
  ドライバ作らなくてもためになる
Firefoxの改造テクニック! Firefoxの改造テクニック!
大浦 淳
  いま栗日記拡張を考えてます
Apacheモジュール プログラミングガイド Apacheモジュール プログラミングガイド
小山 浩之
  Apacheの中身もわかるよ
図解 実戦マーケティング戦略 図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
やぎの目ゴールデンベスト やぎの目ゴールデンベスト
林 雄司
  よめも爆笑してました
アルケミスト アルケミスト
パウロ・コエーリョ
  ヘコみそうなとき読みます
X51.ORG THE ODYSSEY X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
チベット永遠の書 チベット永遠の書
Theodore Illion
  いろんな意味ですごい!!
影響力の武器 影響力の武器
ロバート・B・チャルディーニ
  思わず納得します