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

Last-Modified: 2007/5/20

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

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

今まで、Bogofilter というスパムフィルタを噛ませて、スパムメールを そこそこブロックしていたのですが、サーバやノートの OS を入れ換えて いるうちに、設定が面倒になってきました。
ですので、ここのところは Gmail を噛ませて、スパムなメールをふるい 落としています。

しかし、みなさんご存じのとおり、スパムメールの認識率が 100% になる ことはありえません。ですから、一部の精鋭が、網の目をかいくぐり手元 にやってくる場合もありますし、大事なメールが、スパムと誤判定されて 届かないことも、若干とはいえあります。

前者は消すだけだからいいのですが、後者は見逃せません。
しかたがないので、Gmail の「迷惑メール」に大事なメールが入ってない かどうか、定期的にチェックしています。

ただ、定期的に確認する習慣を身につけていないため、うっかり1週間位 放置してしまうことが、ときどきあります。

この間の黄金週間では、一度もチェックしませんでした。
ですので、連休明けに出社して、Gmail を覗いたら… orz

結局、スパムに振り回されてるだけのような気がする、今日この頃です。
まとめたふりをしたところで、今週も、はりきってまいりましょう!

今週のお題 - wheel グループを活用する

前世紀末、Sun のワークステーションが、飛ぶ鳥を落とす勢いでシェアを 拡大していたころ、当時の UNIX 的な OS は、wheel グループに所属する ユーザだけが、su コマンドで root になれました。(たしか)

かたや Linux では、当初から、だれでも、su コマンド で root になる ことができます。(おそらく)

しかし、root のパスワードを知ってしまった(あるいは解析してわかった) ひとは、だれでも root になれてしまうことになります。
それは、セキュリティ上、あまり好ましいと言えないように思います。

セキュリティに関しては、年々対策が進んでいますが、これに関しては、 昔のほうがよいと思うのですが、いかがでしょうか。

というわけで、今週は、wheel グループのひとだけ、su コマンドで root になれるようにする方法を、ご紹介したいと思います。

− − − − − − − − − − − − − − − − − −

前置きが長くなってしまいましたが、方法自体は、簡単です。

su コマンドは PAM を使って認証を行いますので、/etc/pam.d/su を少々 変更するだけで、実現できます。

たとえば、Fedore Core 5 や Vine Linux 4.1 では、/etc/pam.d/su が、 以下のようになっています。(コメントを一部割愛しています。)

#%PAM-1.0   
auth            sufficient      pam_rootok.so   
#auth           sufficient      pam_wheel.so trust use_uid   
#auth           required        pam_wheel.so use_uid   
auth            include         system-auth   
...後略... 

これの、4行目のコメントを外すだけです。

#%PAM-1.0   
auth            sufficient      pam_rootok.so   
#auth           sufficient      pam_wheel.so trust use_uid   
auth            required        pam_wheel.so use_uid   
auth            include         system-auth   
...後略... 

上記以外に、コマンドを実行したりする必要はありません。
su コマンドが、実行時にこの設定を見てくれるからです。

su コマンドがこの設定を見て pam_wheel を呼び出し、wheel グループに 所属しているかどうかを確認します。そして、もし所属していなければ、 拒否してくれます。

Ubuntu 6.10 の場合ですと、/etc/pam.d/su の中身が上記とは異なります が、同様のコメント行があります。それをコメントアウトしてください。

SUSE 10.1 の場合、/etc/pam.d/su は以下のようになっています。

#%PAM-1.0   
auth            sufficient      pam_rootok.so   
auth            include         common-auth   
account         include         system-auth   
...後略... 

同様のコメント行がありませんので、挿入してしまいましょう。

#%PAM-1.0   
auth            sufficient      pam_rootok.so   
auth            required        pam_wheel.so use_uid   
auth            include         common-auth   
account         include         system-auth   
...後略... 

設定できたら、あとは su コマンドを実行して確認するだけです。
念のため、su する前に、groups コマンドを実行して、wheel グループに 所属していることを、確認してください。

% groups   
users wheel vboxusers   

それでもうまくいかない場合は、以下のように debug を指定しますと、 syslog になにかヒントを吐いてくれる…かもしれません。

auth            required        pam_wheel.so use_uid debug   

− − − − − − − − − − − − − − − − − −

それ以前に、システム管理者が wheel グループに属していない場合は、 wheel グループに入れてあげないといけませんよね。

たとえば、clarice さんを wheel グループに参加させたい場合、以下の ように groupmod コマンドを実行してください。

# groupmod -A clarice wheel   

そもそも wheel グループが存在しないという場合は、groupadd コマンド を実行して、wheel グループを作りましょう。

# groupadd -g 10 wheel   

Linux では、wheel のグループID が 10 のようですので、10 を指定して みました。(ちなみに、BSD 系では 0 のようです。) ただ、pam_wheel 自体は、wheel のグループID に制限を設けていません ので、10 以外でも問題はないと思います。(たぶん) いずれにせよ、他と重複しないグループID を使用してください。

あるいは、すでに wheel グループに相当するグループがあるなら、その グループを代わりに使う、という手もあります。

wheel 以外のグループで実現したい場合は、/etc/pam.d/su の pam_wheel の行に、「group=グループ名」を追加します。
たとえば、admin グループのみ、su コマンドで root になれるようにする には、以下のように記述してください。

auth            required        pam_wheel.so use_uid group=admin   

− − − − − − − − − − − − − − − − − −

さて、せっかくいろいろ設定したのですから、wheel グループをもう少し 活用してもよさそうですよね。

以前にご紹介しましたが、sudo コマンドを、wheel グループのひとたち が使えるようにする、というのはいかがでしょうか。

そうするには、visudo コマンドを実行して、以下の1行を追加します。

%wheel        ALL=(ALL)       ALL   

… sudo ってなに? という貴兄は、よろしければ以下をご覧ください。

Vol.052 - 管理者の権限を少しだけ与える http://www.usupi.org/sysad/052.html
Vol.053 - sudo をカスタマイズする http://www.usupi.org/sysad/053.html
Vol.054 - /etc/sudoers をすっきりさせる http://www.usupi.org/sysad/054.html

− − − − − − − − − − − − − − − − − −

以上、wheel グループを有効に活用する方法を、ご紹介しました。

ユーザのみなさんの利便性も考慮しつつ、セキュアな設定をしていただけ ますと、幸いです。

ちなみに、一番最初に出てきた、/etc/pam.d/su の3行目の、

#auth           sufficient      pam_wheel.so trust use_uid   

これのコメントを外しますと、wheel グループのひとは、パスワードなし で root になれます。
そんな特異なシチュエーションに遭遇したときにでも、ご活用ください。

宿題の答え

先週の宿題は、

テンプレート・ファイルが更新されたら、自動的に設定ファイルを更新 
するようにしてみましょう。   

でした。

テンプレート・ファイルと設定ファイルのタイムスタンプを比較し、更新 されていたら、変換すればよいと思います。

タイムスタンプを比較し、更新されたときだけ処理を行うといえば、make でしたよね。

またまた、前回の postfix の main.cf を例にしてしまいますと、以下の ような Makefile を用意すればいいと思います。
(すでに /etc/postfix/Makefile がある場合、以下を追加してください。
また、sed や mv の前の空白には、TAB を使用してください。)

main.cf: main.cf.tmpl   
  sed "s/@MYHOSTNAME@/`hostname -s`/" $< > $@.TMP && \   
      mv -f $@.TMP $@   

そして、make main.cf を実行すれば、自動更新されます。

# make -C /etc/postfix main.cf   
sed "s/@MYHOSTNAME@/マシン名/" main.cf.tmpl > main.cf.TMP && \ 
  mv -f main.cf.TMP main.cf   

ちなみに、$@ は main.cf に、$< は main.cf.tmpl に置き換わります。

一旦、main.cf.TMP というファイルに記録してから、mv コマンドで本物 に上書きしています。わざわざ、こんな回りくどいことをしているのは、 ディスク容量の不足などで、main.cf が失われないようにするためです。
(先週のお題ではそうしませんでしたが、説明が長くなるのを避けるため 省略しました。すみません。)

あとは、cron で定期的に make コマンドを実行すればいいですね。
たとえば、/etc/crontab に以下を追加しましょう。

*/5 * * * * root make -C /etc/postfix > /dev/null   

分のところが /5 となっていますが、これは5分おきに実行する、という 意味です。10分おきがいいなら、/10 とかにしてください。

… make ってなんじゃい? という貴兄は、以下をご覧くださいませ。

Vol.099 - make を使って処理を簡略化する http://www.usupi.org/sysad/099.html

今週の宿題

今週の宿題は、

wheel グループに所属するすべてのユーザを、列挙してください。   

です。

今回は簡単だと思いますので、とくにヒントはありません。
余力のあるかたは、スクリプトにしてみてください。
(実用性はないかもしれませんが…。)

あとがき

本業で、いくつかの企業が集まって、とある製品の開発をしているのです が、いろいろと問題があって、スケジュールどおりに進んでいません。

今回、実体験して思ったことは、こういったプロジェクトがうまく進んで いくかどうかは、全体をまとめて引っ張っていくリーダーがいるかどうか ではないか、ということです。

というのも、このお仕事の関係で、なにか問題が発生したときに、メール などで状況を投げているのですが、プロジェクトリーダーさんからは何も 応答がないからです。
幸い、プロジェクトリーダーさんとは別のかたが、いろいろと旗を振って くださっているので、あまり途方に暮れずに済んでいます。

いや、こちらは末端に位置する、しがないプログラマーですので、ただ声 が届かないだけなのかもしれません。
もしそうなのだとしたら、それはそれで、連絡するということの重要さに 気づくことができた、と言えそうです。

…とはいえ、今までのわたしは、それとは逆のこと、なるべく問題の遠く にいようとする行動をとっていたように思います。(反省…)

これからは、そういったことに気をつけながら、今のお仕事がデスマーチ に変貌しないことを祈りつつ、開発にはげみたいと思います。
(われながら、すごいまとめ方だ…。)

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

 

「いますぐ実践! Linux システム管理」はこちらです。
メルマガの解除、バックナンバーなども、以下からどうぞ。
https://www.usupi.org/sysad/ (まぐまぐ ID:149633)

その他、作者に関するページは、概ね以下にございます。
https://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
https://twitter.com/kuriking/ (twitter)
https://facebook.com/kuriking3 (facebook)
https://jp.pinterest.com/kuriking/pinterest)
https://www.instagram.com/kuri_king_/ (instagram)


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


トップ

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

プロフィール

▼ 本が出ますよ(栗イラストも!)
   

▼ リンク

Server World
各種ディストリビューションの設定例がてんこ盛りです。
日経Linux
今や数少なくなってしまったLinuxの雑誌。
Linux & OSS − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
OSDN Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
Linux Development - IBM Developer
開発者向けですが、勉強になりますよ。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)

▼ 作ってみました

▼ 最近読んだ本

位置情報の基本と技術
谷口功
  わかりやすかったです。ちょい古いけど。
 
はじめてのバイクメンテナンス
?
  ざっくり理解できました。
 
仕事の思想
田坂広志
  再び。大事だと思います。
 
ドロヘドロ本
林田球
  作者の考えとかわかって面白い!
 
認知症の介護と手続き
遠藤英俊
  理解が深まりました。
 
くらべてわかる航空管制
園山耕司
  素人には難しかった…。
 
旅客機が飛ぶしくみ
チームFL370
  わかりやすくておもしろい。
 
リーダブルコード
Dustin Boswell,Trevor Foucher
  意識してコードを書いています。
 
介護の現場と業界のしくみ
高山善文
  介護する側の視点ですが参考になりました。
 
図解でわかるISO9001のすべて
大浜庄司
  一つ古いけど概要はわかりました。
 

▼ 気に入ってる本

Ship It! ソフトウェアプロジェクト成功のための達人式ガイドブック
Jared Richardson, William Gwaltney Jr.
  いろんな分野に適用したい
 
Java並行処理プログラミング
Brian Goetz, Joshua Bloch, Doug Lea
  Javaや並行処理を甘く見てました
 
ビジュアライジング・データ - Processingによる情報視覚化手法
Ben Fry
  Processingすごくよいです
 
センネン画報その2
今日マチ子
  前作もよいがもっといい!
 
出現する未来
Peter Senge, C. Otto Scharmer, Joseph Jaworski, Betty Sue Flowers
  難しいけど到達したいです
 
図解 実戦マーケティング戦略
佐藤 義典
  栗日記も戦略的に行こう!
 
百日紅(上)(下)
杉浦日向子
  どう書けばいいかわからないけどすばらしい!
 
アルケミスト
パウロ・コエーリョ
  擦り切れるほど読んでます
 
X51.ORG THE ODYSSEY
佐藤 健寿
  X51.ORGの集大成
 
影響力の武器
ロバート・B・チャルディーニ
  思わず納得します
 

▼ せんでん