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

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


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

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

会社で、日経SYSTEMS を半年だけ購読することになり、 もれなくもらえたおまけの冊子を、早速読みました。

日経SYSTEMS
http://coin.nikkeibp.co.jp/coin/sys/

「仕事力強化読本」と「システム構築完全読本」というやつです。

前者は、部下を育てる方法や、 顧客との交渉をうまく行うための方法などが書かれていました。 会議を効率よく行うには、なんてのもあります。

後者は、精度の高い見積りや要求定義の仕方、WWWアプリの最新技法、 運用強化の方法などが載っていました。

わたしの場合、ひとりで淡々とドライバを書いたりしていますので、 部下はひとりもいませんし、会議をすることもあまりありません。
(ちなみに、「かいぎ」を変換したら、「懐疑」と出ましたよ。)

見積りを書くこともありませんし、 ドライバだと仕様がすでに自明であることも多いですし、 社内向けのドキュメントを書くこともほぼないです。

読んでいて、世間とはかなりかけ離れたところにいるのだということが、 よくわかりました。

…というわけでややがっかりしてますが、気をとり直して、 今週も、はりきってまいりましょう!

今週のお題 - 管理者の権限を少しだけ与える

システム管理を行う上で常に付きまとう問題としましては、ユーザの利便性と、 システムの堅牢性との、トレードオフではないかと思います。

事務的なこと以外でも Linux を使っていますと、 一般ユーザが root の権限を必要とすることが、少なからず出てくると思います。

しかし、管理者じゃないひとに、 root のパスワードを教えるわけにはいきませんよね。
かといって、必要なコマンドに setuid をつけて対処するのも、 なんだかセキュリティ上まずいように思われます。
しかし、そのたびに管理者が代行実行するのも、大変です。

んもー、ただでさえ忙しいのですから、なるべく楽をしたいところです。

というわけで、今週は、sudo なるコマンドを使って、root の権限を必要とするコトを、 一般ユーザが行えるようにしてみたいと思います。

別のユーザの権限でシェルやコマンドを実行すると言えば、su コマンドです。 root で作業するときに、よく使うのではないかと思います。

しかし、su コマンドで別のユーザになるには、 そのユーザのパスワードを知っている必要があります。 (root なら root のパスワードですね。)
また、なれるユーザや実行できるコマンドなどを細かく設定することも、 su コマンドにはできません。

これらを可能とするコマンドが、sudo です。
sudo コマンドを使えば、root のパスワードを教えることなく、 root の権限を少しおすそわけすることができます。

まず、sudo コマンドの超簡単な使い方ですが、以下の通りです。

  sudo [-u 実行ユーザ] コマンド...

コマンド... には、実行したいコマンドとその引数を指定します。
通常は、root の権限でコマンドを実行しますが、-u オプションでユーザを指定すると、 そのユーザの権限でコマンドを実行します。
また、

  sudo [-u 実行ユーザ] -s

と実行すると、そのユーザのシェルを起動します。(su に似てますね。)

さて、sudo コマンドは、まず設定を行わないと、使えません。
sudo の設定ファイルは、/etc/sudoers です。
/etc/sudoers の書式のうち、設定に関するものは、以下です。

  ユーザリスト  ホストリスト = (実行ユーザリスト)  コマンドリスト

ユーザリストには、sudo の対象とするユーザもしくはグループを指定します。 グループの場合は、先頭に % をつけます。

ホストリストには、実行を許可するホスト名を指定します。
おそらく、複数のマシンで、/etc/sudoers を共有する場合に便利なのだと思います。 (NIS を使ってるところとかですね。)
共有していなければ、通常は指定する必要はないと思います。(たぶん)

実行ユーザリストには、誰の権限で実行できるか、ユーザを指定します。

コマンドリストには、実行できるコマンドを指定します。

いずれも、, で区切って、複数指定することができます。
ALL を指定すると、すべておっけーになります。
また、先頭に ! をつけると、否定になります。

それから、/etc/sudoers は、 vi などのエディタで直接編集しないようにしてください。
visudo というコマンドを実行がありますので、 visudo を使って編集するようにしてください。

では、いくつか例を示してみたいと思います。

まず、wheel グループのひとが、root の権限でなんでも実行できるようにするには、 以下の設定を /etc/sudoers に追加します。

  %wheel ALL=(root) ALL

visudo で追加したら、早速試してみましょう。
wheel グループに所属するユーザの権限で、 /var/log/messages を tail コマンドで参照してみようと思います。
通常では、/var/log/messages は、root ユーザしか参照できませんので、

[実行]   <--- 押してね
 
%

と言われてしまいます。ですが、sudo を使えば、参照できます。

[実行]   <--- 押してね
 
%

root ではなく、自分のパスワードを入力します。
もし、パスワードの入力を省きたいなら、

  %wheel ALL=(root) NOPASSWD:ALL

に変更してください。パスワードなしで実行できるようになります。

次は、bill と james が、すべてのユーザの権限で、 /bin/bash をのぞくすべてのコマンドを実行できるようにするには、以下を追加します。

  bill,james ALL=(ALL) ALL,!/bin/bash

visudo で上記を追加しますと、

  % sudo kill -HUP 1

なんてことができますが、

[実行]   <--- 押してね
 
%

bash は起動できません。
ただし、名前を変えてしまえば、起動できてしまいます。

[実行]   <--- 押してね
 
%

ですので、コマンドリストに ! を使うのは、有効ではなさそうです。

以上、sudo コマンドについて、簡単にご紹介しました。
設定によっては、解放し過ぎることがあるかもしれませんが、 ぶっ壊れることはないと思いますので、いろいろ試してみてください。
そして、うまくいきそうでしたら、徐々にユーザに解放してみてはいかがでしょうか。

宿題の答え

先週の宿題は、

  autofs を使って、CD-ROM を自動マウントできるようにしてみましょう

でした。

ここでは、/misc/cd にアクセスしたときに、CD-ROM を自動マウントするように、 設定してみたいと思います。

まず、/etc/auto.master に、以下の1行を追加します。
(すでにあるなら、追加しなくてもいいです。)

  /misc  /etc/auto.misc

そして、/etc/auto.misc には、以下を記述(あるいは追加)します。

  cd  -fstype=iso9660,ro,nosuid,nodev   :/dev/cdrom

デフォルトが NFS ですので、fstype に iso9660 を指定しています。
また、CD-ROM に書き込むことができませんので、ro を指定しています。
あとは好みですが、nosuid で setuid が無効にして、 nodev でデバイスファイルを無効(アクセス不可)にしています。

最後に、設定を再度読み込んでもらいます。

[実行]   <--- 押してね
 
#

とはいえ、今どきのディストリビューションですと、 supermount などで自動的にマウントされてしまったりするかもしれませんね…。
まあ、autofs の練習だと思って、やってみてくださいまし。

今週の宿題

今週の宿題は、

  あなたが、root 以外のユーザの権限ではすべてのコマンドを実行でき、
  root の権限では /bin/cat だけを実行できるように、/etc/sudoers に
  設定を記述してください

です。

実行ユーザが root の場合と root 以外の場合と、それぞれの設定を記述すれば、 できると思いますよ。

あとがき

毎週毎週、日曜日に発行したら、次の日くらいに、手で HTML に変換したものを、 バックナンバーへ無造作に放り込んでいます。

いますぐ実践! Linux システム管理 / バックナンバー
http://www.usupi.org/sysad/backno.html

手動とはいえ、ほぼ機械的に変換していますので、 メールの文面と見た目がほぼ変わらず、われながらつまらんなーと思っておりました。

で、この度、というほどでもないのですが、コマンド実行例のところを、 そのまま表示しないで、さも実行しているような雰囲気を醸し出す努力をしてみました。

Vol.051 - autofs で使うときだけマウントする
http://www.usupi.org/sysad/051.html

余力がなかったので、先週分だけしかやってません。すみません。
一見すると、いままでと全く変わっていないように見えます。
ですが、読み進んでいくと、

[実行] <--- 押してね
#

という箇所があることに、気づかれるのではないかと思います。
この [実行] のところを押すとですね、まるで、 たった今そのコマンドを実行しているかのように、表示が変化します。

まあまあ、ウソだと思って、押してみてください。
…ああ、限りなくウソに近いですが、ウソじゃない…ですよね?

はい、JavaScript を使って、ちょっとずつ表示しているだけでした。
うーん、どうでしょうか。よいとか悪いとかつまらないとかやめろとか、 ご意見ご感想をいただけますと、幸いです。

当初は、Flash を使って、ほんものっぽく作ろうと思っていました。
でも、Flash で作るのが面倒だったのと、 あえて JavaScript で作るのも悪くないなーと思い、 このような半端ものに仕上げた次第です。

あ、ほんものっぽくするだけなら、 JavaScript と GIF アニメーションでもなんとかなりそうですね。 …と、たったいま思いつきましたが、 たぶん毎週 GIF アニメーションを作成するのは、無理だと思います。

そんなわけで、sudo ネタは、いかがでしたでしょうか。
/etc/sudoers には、他にもいろいろ設定できるようです。
そのあたりを、来週以降も続けてみようかと思っております。

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

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

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

「栗日記」−栗の絵を、毎日描いています。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


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

トップ

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

プロフィール

▼ リンク

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

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本