最低限 Unix / Linux [I]

4. パーミッション

必修

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

発展

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

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

本節ではファイルの利用許可がどのように設定されているかを, 具体例を見ながら確認してみましょう.
これ以降で出てくる foo は自分のアカウント名なので適宜置き換えて入力してください.

[4.1.1] /home/foo

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

  1. 自分の home 領域に移動します.
    $ cd /home/foo
    
  2. ls コマンドで home 領域に何があるかを確認します.
    $ ls
    ichigo.txt mikan ringo.jpg ...
    
  3. ls コマンドに -l オプションを付けて詳細情報まで表示させます.
    $ ls -l
    合計 60
    -rw-r--r-- 1 foo foo       23 2025-04-25 14:26 ichigo.txt
    drwxr-xr-x 7 foo foo     4096 2025-04-25 14:28 mikan
    -rwxr-xr-x 1 foo foo    53618 2025-04-25 14: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


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

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

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

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

$ cat ~bar/secret/word.txt
< 相手 (bar) のホームディレクトリの中にあるファイルの中身を確認できますか? 
    

このままでは,相手にファイルの中身を見てもらうことはできません.なぜでしょうか?

練習: 相手からファイルを確認できるようにするにはどうすればいいでしょうか?
chmod コマンドを使ってファイル・ディレクトリのモードを適当なものに変更して,
(1) 相手からファイルの中身を確認できるようにしてください.
(2) 相手が自分のファイルを削除できるようにしてください.

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


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

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


さいごに,ホームディレクトリのパーミッションをもとに戻し,計算機からログアウトしてください.


$ chmod 700 ~ 
$ exit 

本日必修の実習内容は以上です。お疲れさまでした。
次のページからは付録ですので時間が余った方は読んで見てください。

次ページへ

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

最終更新日: 2025/04/17(吉川颯真) copyright © 2000-2025 inex