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

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


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

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

今、とあるお仕事で、どっぷりはまっております。

とある端末の開発をしているのですが、ある部分が動作しないため、調査を行ったり、 調査していただいて結果を待ったり、というのを延々と繰り返しています。

こういうときの待ち時間を、ハイパースレッディングのように、 他の仕事に使うことができれば、効率を高められるように思います。

そんな簡単に切替えられるものではないかもしれませんが、 コンテキスト・スイッチをうまくやることで、 オーバーヘッドを極力最小限におさえることが、できそうな気がします。

人間、不可能と思うからできないのであって、絞り出すように考えれば、 なにか方法を思いつくはずです。考えさえすれば…考えよう…。

なんて考えていたら、待ち時間がとっくに終わっていました…。
まあ、考えただけでも有意義だった、とポジティブに思うことにします。

それでは、今週も、それなりにはりきってまいりましょうか。

今週のお題 - ファイルのパーミッションを理解する

セキュリティ対策と言えば、パケットフィルタリングとか、修正パッチの適用とか、 ウィルス対策とか、いろいろ思い浮かぶますよね。

でも、内部での不正なことを防ぐには、もっと基本的なところの設定も、 必要不可欠なのではないかと思います。

基本的なところの設定というのは、ずばり、ファイルのパーミッションのことです。 (アクセス権とも言いますね。)

大事なファイルが、だれでもウェルカムな状態になっていますと、 改竄や情報漏洩に直結してしまいます。たった1つの設定ミスが、 えらいことを引き起こしてしまうことも、ありえない話ではないと思います。

というわけで、今週は、初心に戻りまして、ファイルのパーミッションについて、 ご紹介したいと思います。


まずは、超基本的なところから、いってみましょう。

ファイルには、それぞれ、そのファイルを所有するユーザ(以下 所有者)とグループが、 必ず決められています。

  % ls -l ~/.bashrc
  -rw-r--r-- 1 usu users 3234  3月24日 23:45 /home/usu/.bashrc

上記の場合、ホーム直下にある .bashrc の所有者は usu で、 グループ名は users です。

ですので、ファイルのパーミッションは、

  • 所有者本人
  • グループに属するひと
  • 本人でもなくグループにも属さないその他のひと

の3種類に対して、指定することができます。
指定できる内容は、「読み」「書き」「実行」の3種類です。

 

実際に見てみましょう。たとえば、/bin/ls の場合、

  % ls -l /bin/ls
  -rwxr-xr-x 1 root root 101264  6月13日  2006 /bin/ls*

一番最初の、-rwxr-xr-x という文字列が、パーミッションを表します。
あ、最初の - は、ファイルの種類を表していました。
この場合は、普通のファイルであることを表しています。

次の rwx は、所有者(root)に対するパーミッションです。
r が読み、w が書き、x が実行できることを表しています。つまり、 全て許可されているということですね。

その次の r-x は、グループ(root)に対するパーミッションです。
r と x がありますが、w がないので、書き込みが許されていません。

その次の r-x は、その他のひとに対するパーミッションです。 これは、先ほどのグループの場合と同じく、書き込みが許されていません。

…とまあ、だらだらと書いてしまいましたが、ようは、所有者はなんでもできて、 それ以外のひとは書き込めない、というパーミッションでした。
たとえば、一般人が /bin/ls を上書きしようとしても、叱られます。

  % cp /bin/su /bin/ls
  cp: 通常ファイル `/bin/ls' を作成できません: 許可がありません

…まあ、書けてしまったら、それはそれでこわいのですが。


では、ディレクトリの場合は、どうなのでしょうか。

基本的にはファイルと同じですが、「読み」「書き」「実行」の意味が、 以下のように、微妙に異なります。

「読み」=そのディレクトリにあるファイル一覧の参照 「書き」=そのディレクトリにあるファイルの作成・削除 「実行」=そのディレクトリにあるファイルのアクセス

「読み」「書き」に関しては、ディレクトリ・エントリ (ディレクトリにあるファイルの情報)に対する「読み」「書き」だと考えますと、 理解しやすいのではないかと思います。

たとえば、こんなディレクトリがあったとします。

  % ls -ld prv
  d-wx--x--x 3 usu adm 4096  6月10日 12:41 prv/

最初の d は、prv がディレクトリであることを表しています。
所有者 usu に対しては、「書き」「実行」が許されてますが、 「読み」は許されていません。
ですから、所有者である usu が prv を参照しようとしても、

  % ls -l prv
  /bin/ls: prv: 許可がありません

と言われてしまいます。所有者なのに…。
しかし、そのディレクトリにファイルなどを作成したり、 既存のファイルやディレクトリを参照することは可能です。

  % mkdir prv/incoming
  % ls -ld prv/incoming
  drwxr-xr-x 2 usu adm 4096  6月10日 22:56 prv/incoming/

ちなみに、所有者以外のひとは、実行のみ許可されていますので、 その下にあるファイルの参照だけが、許可されます。

  % ls prv
  /bin/ls: prv: 許可がありません
  % mkdir prv/work
  mkdir: ディレクトリ `prv/work' を作成できません: 許可がありません
  % ls -ld prv/incoming
  drwxr-xr-x 2 usu adm 4096  6月10日 22:56 prv/incoming/

つまり、参照する際には、ファイル名を知っている必要があります。
これを利用して、anonymous FTP で公開しているディレクトリに、 同等の設定を行うことがあります。
そのディレクトリにファイルを置き、そのファイルを公開したいと思ったひとにだけ、 URL をお知らせします。そうすると、ファイルの存在を知るひとだけ、 そのファイルを FTP で取得できます。
(ちょっと緩い制限をかけたいときに、便利ではないかと思います。)


基本的なところがわかったところで、実際に設定してみましょう。
パーミッションの設定は、chmod コマンドで行います。

  chmod [ugoa][+-=][rwx][,...]

u(所有者)、g(グループ)、o(その他)、a(すべて)のひとびとに対し、 rwx の設定を、+(追加)、-(削除)、=(指定)します。
たとえば、ディレクトリ pub に対して、所有者は全て許可、 それ以外のひとは書き込み以外を許可するには、chomod コマンドを、 以下のように実行します。

  % chmod u=rwx,go=rx pub
  % ls -ld pub
  drwxr-xr-x 2 usu adm 4096  6月10日 23:06 pub/

その他のひとびとに、一切の許可を与えないようにしたくなった場合は、 以下のように実行します。

  % chmod o-rx pub
  % ls -ld pub
  drwxr-x--- 2 usu adm 4096  6月10日 23:06 pub/

あるいは、8進数で設定することもできます。

  % chmod 511 prv
  % ls -ld prv
  dr-x--x--x 2 usu adm 4096  6月10日 23:41 prv/

詳しくは、chmod コマンドのオンラインマニュアル等を、ご覧ください。


以上、ファイルのパーミッションの基本的なところを、ご紹介しました。

既存のファイルやディレクトリのパーミッションが、 なぜそのように設定されているのか、考えてみるとよいかもしれません。
そして、もっと制限を強くできそうなら、試しにやってみましょう。
(ホンモノのサーバでは、やらないほうがいいかもしれませんが。)

宿題の答え

先週の宿題は、

  auth, account, password もしくは session の行がないとき、認証は
  成功するでしょうか。また、/etc/pam.d にファイルがない場合はどう
  でしょうか。

でした。

まず、/etc/pam.d にファイルがない場合は、ほぼ確実に失敗します。
(/etc/pam.conf に記述がある場合は別です。)

例として、/etc/pam.d/sudo がないときの、 sudo コマンドの実行結果を以下に示します。(Fedora Core 5 などで確認)

  % sudo ls
  Sorry, try again.
  Sorry, try again.
  Sorry, try again.
  sudo: 3 incorrect password attempts

次に、auth, account, password もしくは session がない場合ですが、 これは、コマンドによって異なりました。

auth と account は、ユーザ認証を必要とするコマンドの場合に、 必須となるようです。
password は、passwd コマンドは当然必要でしたが、他のコマンドでは、 ざっと確認した限りでは、なくても問題なく動作しました。
session は、su や sshd など、 ログインしたことを記録する必要のあるコマンドの場合に、必要なようです。

というわけで、おそらく、各コマンドの実装によるのではないか、 と推測しております。たとえば、passwd コマンドは、 password さえあれば動作しました。
(ソースコードを見ても、よくわかりませんでした。…スミマセン。)

いちおう、例として、 /etc/pam.d/sudo から account を削除したときの sudo コマンドの実行例を、 以下に示します。(同環境で確認)

  % sudo ls
  Password:
  sudo: pam_acct_mgmt: 7
  Sorry, try again.
  Password:

最初に auth が評価されますので、パスワードを聞かれます。
正しいパスワードを入力しても、account ではじかれるため、 ユーザ認証に失敗したとみなされて、再度パスワードを聞かれるようです。

…というわけで、はっきりしない解答になってしまいました。
申し訳ありません。

※ sudo に関する、蛇足的な補足です。
/etc/sudoers で NOPASSWD: をつけていると、/etc/pam.d/sudo が存在しなくても、 動作しました。認証が要らないからでしょうか…。

今週の宿題

今週の宿題は、

  シンボリックリンクのパーミッションについて、調べてみましょう。

です。

シンボリックリンクそのもののパーミッションや、 シンボリックリンクのあるディレクトリのパーミッションから受ける影響などを、 実際に試してみてください。

あとがき

そういえば、わたしは、左利きです。
幼少のころに、右利きに強制変更されそうになりましたが、不器用でしたので、 ほぼ純正の左利きとして、37年間を一貫して過ごしてきました。
(習字とマウスを除けば、すべて左を使います。)

右利き用のはさみが使えないとか、 食事のとき左のひととひじがぶつかるなどの弊害を除けば、 左利きで苦労した覚えはあまりありません。

ですが、やはり、自分は左利きなんだ、という思い入れのようなものは、 ずっと持っています。だからか、以下の本に反応してしまいました。

「左利き」は天才?−利き手をめぐる脳と進化の謎
http://www.amazon.co.jp/exec/obidos/ASIN/4532165628/usupiorg06-22

まだ途中までしか読んでいませんが、左利きに関する歴史や学説、迷信等の話が、 網羅されている…というよりは、とりとめもなく書かれている、という感じの本です。

意外だったのは、左利きの割合が少ないのは人間だけということと、 なぜ左利きになるのか、そして右利きとどう違うのかが、 いまだにわからないということです。

文章がとても読みやすくて面白いです。左利きの現状を知りたい、 という奇特なかたは、ぜひ読んでみてください。(^ε^)

まあ、わたくしは、これからも、左利きであることを誇りに思い、 日々を過ごしていこうと思っております。(おおげさ)

 

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

 

「いますぐ実践! 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/ (栗日記ブログ)


[バックナンバーのトップへ] [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

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本