最低限 Unix / Linux [I]

4. パーミッション

必修

  1. アカウント作成とログイン, ログアウトの作法
  2. Unix の代表的なコマンド
  3. ファイルとディレクトリ
  4. パーミッション

発展

  1. ユーザ情報に関するファイル
  2. ルートディレクトリにある主なディレクトリ
  3. パーミッション付録

[4.1] パーミッションを確認する

本節ではファイルの利用許可がどのように設定されているかを, 具体例を見ながら確認してみましょう. これ以降で出てくる $username は自分のアカウント名なのでご注意ください.

[4.1.1] /home/$username

まずは, 先ほど作成したファイルのパーミッションを確認してみましょう.

  1. 自分の home 領域に移動します.
    $ cd /home/$username
    
  2. ls コマンドで home 領域に何があるかを確認します.
    $ ls
    ichigo.txt mikan ringo.jpg ...
    
  3. ls コマンドに -l オプションを付けて詳細情報まで表示させます.
    $ ls -l
    合計 60
    -rw-r--r-- 1 $username $username       23 2011-02-17 03:26 ichigo.txt
    drwxr-xr-x 7 $username $username     4096 2011-04-13 13:28 mikan
    -rwxr-xr-x 1 $username $username    53618 2011-06-13 19:07 ringo.jpg
    .
    .
    .
    

多少の差異はあると思いますが, 概ね似たような表示が現れるでしょう. ここで表示される情報のうち本実習で注目するのはスペースで区切られたカラムのうち 1 列目および 3, 4 列目です. 他の項目については付録にて詳しく取り上げています.

ファイルモード

1 列目の 10 文字(-rwxr-xr-x 等)はまとめてファイルモードとよばれます. ファイルモードのうち, 左端の 1 文字がファイルタイプを表し, 残りの 9 文字がパーミッションを表しています.

ファイルタイプ

ファイルタイプはその名のとおりファイルのタイプを表しています. 上の例では「-」と「d」の 2 種類が見られますが, これはそれぞれ「通常のファイル」と「ディレクトリ」を表します. みなさんが今後接するファイルはほとんどがこのいずれかのファイルタイプです. それ以外のファイルタイプについては付録を参照してください.

パーミッション

パーミッションは 9 文字で表現されていますが, 左から読み取り権限 (Read), 書き込み権限 (Write), 実行権限 (eXecute)の有無を 1 文字で 表しており, それが 3 セットでそれぞれファイルの所有者 (User), ファイルの所有グループ (Group), それ以外 (Others) の 3 者に対する権限を示しています.

ここまでをまとめると次のようになります.

  d rwx r-x r-x
  ^ ^^^ ^^^ ^^^
  |  |   |   |
  |  |   |   アザーズパーミッション
  |  |   |
  |  |   グループパーミッション
  |  |
  |  ユーザパーミッション
  |
  ファイルタイプ

・ファイル所有者(User)

ファイルの持ち主です. 基本的にはファイルを作った人が該当します. ファイル所有者のアカウント名はファイル情報の 3 列目に書かれています.

・ファイル所有グループ(Group)

ファイルを所有しているグループです. 基本的にはファイルを作った人のグループが そのまま適用されます. 複数のユーザでファイルを管理する場合, それらのユーザをグループアカウント (後述) に 登録したうえでファイルの所有グループ名をそのグループアカウントに設定すれば, 共用管理が可能になります. ファイル所有グループのグループアカウント名はファイル情報の 4 列目に書かれています.

・その他のユーザ (Other)

上記に当てはまらない (3, 4 列目に表示されていない) 全てのユーザがこれに該当します.

・読み取り権限(Read)

ファイルの内容を読み取る権限です. このパーミッションがないアカウントでは, そのファイルを 開くことができません.

・書き込み権限(Write)

ファイルに内容を追記する権限です. このパーミッションがないアカウントでは, そのファイルを 編集できません.

・実行権限(eXecute)

ファイルを使う権限です. このパーミッションがないアカウントでは, そのファイルを使うことが できません.

これらの権限が具体的にどのような動作を指すのかは, ファイルタイプによって定義が異なります. ファイルタイプがディレクトリの場合は, RWX がそれぞれ「ディレクトリの中身を確認する」「ディレクトリ内のファイルを追加/削除する」 「ディレクトリを開く」に該当します.

ホーム領域にあるファイルは基本的には自分が作ったものですので, ファイル所有者は自分であり, ファイル所有グループも「自分一人」というグループになっています.

[4.1.2] /etc/

続いては各種の設定ファイルが格納されている /etc/ ディレクトリを確認してみましょう.

  1. /etc/ に移動します.
    $ cd /etc/
    
  2. ls コマンドに -l オプションを付けてディレクトリの中身を表示させます.
    $ ls -l
    .
    .
    .
    -rw-r--r-- 1 root root    2986 2011-01-20 15:42 adduser.conf
    -rw-r--r-- 1 root root      46 2012-04-19 20:52 adjtime
    -rw-r--r-- 1 root root     198 2011-01-20 16:04 aliases
    drwxr-xr-x 2 root root    4096 2012-04-19 18:28 alternatives
    -rw-r--r-- 1 root root     395 2008-03-10 04:58 anacrontab
    drwxr-xr-x 2 root root    4096 2012-03-06 11:39 anthy
    drwxr-xr-x 3 root root    4096 2012-03-05 21:09 apache2
    drwxr-xr-x 7 root root    4096 2012-03-05 20:48 apm
    drwxr-xr-x 6 root root    4096 2012-03-05 21:05 apt
    -rw-r----- 1 root daemon   144 2008-10-20 14:34 at.deny
    drwxr-xr-x 3 root root    4096 2012-03-06 11:37 avahi
    -rw-r--r-- 1 root root    1657 2010-04-10 21:03 bash.bashrc
    -rw-r--r-- 1 root root   57063 2010-11-16 17:08 bash_completion
    .
    .
    .
    

たくさんのファイルが表示されると思いますが, それらのファイル所有者は 原則として root になっています. よって, 一般のユーザ (Others) はこれらのファイルを読み取る (Read) ことはできますが 書き変える (Write) はできません. こうすることで, あくまで計算機全体の運用については計算機管理者 (root) のみが 権限を持ち, 一般のユーザは自分の許される範囲でのみ計算機を利用できるという システムが維持されています.

[4.2] パーミッションを操作する

本節では, ファイルの利用権限をどのように変更するのか, 実際に操作してみましょう

パーミッションの変更には chmod (change mode)コマンドを使用します. このコマンドの使い方は以下のとおりです.


$ chmod (パーミッションの変更内容) (対象ファイル名)

パーミッションの変更内容の書式は 2 種類あり, ユーザ種別を表すアルファベット (u, g, o) に, 権限種別を表すアルファベット (r, w, x) を足し引き (+, -) する方法と, 各権限を意味する数字 (r=4, w=2, x=1) の和を 3 つ並べる方法があります. 後者の方は全てのユーザに対する権限を手軽にまとめて設定できるので便利です.

具体例1)
$ chmod g+w ichigo.txt
< ichigo.txt の所有グループに書き込み権限を付与

具体例2)
$ chmod 750 ichigo.txt
< ichigo.txt の所有ユーザに読み取り/書き込み/実行権限, 
    所有グループに読み取り/実行権限 をそれぞれ与え, 
    その他のユーザには権限を与えない.

それでは実際に目的を設定し, それに応じたパーミッションを設定してみましょう.

ファイルとディレクトリの作成

まずは各端末で以下の作業をしてディレクトリとファイルを作成してください.

$ cd
$ mkdir secret
$ ls -F
secret/

$ echo 'secret-word' > ./secret/word.txt
$ ls ./secret
word.txt

$ chmod ??? secret 

$ chmod ??? secret/word.txt 

< ホームディレクトリに移動
< secret ディレクトリを作成
< 確認
> secret が作成されている

< secret ディレクトリの中に ファイルを作成 ('secret-word' 部分は好きな単語に置き換えること)
< 確認
> word.txt が作成されている

< chmod をつかって secret ディレクトリのパーミッションを変える
  ファイルが相方から見えないように ??? の部分を考えよう (ここではわざと ??? と表している)
< chmod をつかって secret/word.txt ファイルのパーミッションを変える
  上と同様にファイルが相方から見えないよう ??? の部分を考えよう (ここではわざと ??? と表している)

互いのファイルを覗いてみる

お互いに相手の word.txt ファイルを見てみましょう.

$ cat ~$username/secret/word.txt

お互いに相手のファイルが見えなければ成功です. もし見られてしまった場合は, 先の chmod コマンドを先程とは違うモードで再度実行し, 見られない様にしてください.

見られないようにする方法がわかったら, 今度はいろいろなパーミッションにしてその違いを確かめてください. ディレクトリのパーミッションを変えると, そのディレクトリに移動できなくなったりするはずです. cd コマンドなどを試してみてください.

最後に自分の作った word.txt を消去してください. このとき, どのようなモードだとファイル消去できないかも是非試してください.


練習: word.txt もしくはディレクトリ secret のモードを変更し, secret/word.txt ファイルが消去できないようにしてみましょう.

この知識は自分の卒論などを誤って消してしまわないためにも重要です! つまり, 消去できないようにファイルのモードを変更しておけば, 誤って rm コマンドを実行しそうになったときも, 消去されずに済むわけです!

Unix / Linux ではファイルモードの設定によって, 他人のファイルを見ることが可能です. 大抵の場合, 普通に作成したファイルは他人が見れる状態にあるでしょう. もし, 本当に見られては困る内容のファイルはモードを正しい設定にするように心がけましょう. 他人がみても良い設定のファイルは基本的に "見ても良い" 訳ですが, "mail" といった文字列のつく名前のファイルやディレクトリの中, あるいは個人的な情報であることが推測できるファイルは, 仮に見れる状態にあっても絶対に見てはいけません. また, 同様に見られては困るファイルを見れる状態で置いておくことも避けましょう. こういったファイルは, 見た方も見られた方も嫌な思いをしてしまいます.




本日必修の実習内容は以上です。お疲れさまでした。


作業終了後はログアウトをお忘れなく。


次のページからは付録ですので時間が余った方は読んで見てください。

次ページへ

情報実験第二回のページへ戻る

最終更新日: 2018/04/16(村橋究理基) copyright © 2000-2018 inex