4. パーミッション |
---|
必修 |
発展 |
本節ではファイルの利用許可がどのように設定されているかを, 具体例を見ながら確認してみましょう. これ以降で出てくる $username は自分のアカウント名なのでご注意ください.
まずは, 先ほど作成したファイルのパーミッションを確認してみましょう.
$ cd /home/$username |
$ ls ichigo.txt mikan ringo.jpg ... |
$ 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 ^ ^^^ ^^^ ^^^ | | | | | | | アザーズパーミッション | | | | | グループパーミッション | | | ユーザパーミッション | ファイルタイプ
ファイルの持ち主です. 基本的にはファイルを作った人が該当します. ファイル所有者のアカウント名はファイル情報の 3 列目に書かれています.
ファイルを所有しているグループです. 基本的にはファイルを作った人のグループが そのまま適用されます. 複数のユーザでファイルを管理する場合, それらのユーザをグループアカウント (後述) に 登録したうえでファイルの所有グループ名をそのグループアカウントに設定すれば, 共用管理が可能になります. ファイル所有グループのグループアカウント名はファイル情報の 4 列目に書かれています.
上記に当てはまらない (3, 4 列目に表示されていない) 全てのユーザがこれに該当します.
ファイルの内容を読み取る権限です. このパーミッションがないアカウントでは, そのファイルを 開くことができません.
ファイルに内容を追記する権限です. このパーミッションがないアカウントでは, そのファイルを 編集できません.
ファイルを使う権限です. このパーミッションがないアカウントでは, そのファイルを使うことが できません.
これらの権限が具体的にどのような動作を指すのかは, ファイルタイプによって定義が異なります. ファイルタイプがディレクトリの場合は, RWX がそれぞれ「ディレクトリの中身を確認する」「ディレクトリ内のファイルを追加/削除する」 「ディレクトリを開く」に該当します.
ホーム領域にあるファイルは基本的には自分が作ったものですので, ファイル所有者は自分であり, ファイル所有グループも「自分一人」というグループになっています.
続いては各種の設定ファイルが格納されている /etc/ ディレクトリを確認してみましょう.
$ cd /etc/ |
$ 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) のみが 権限を持ち, 一般のユーザは自分の許される範囲でのみ計算機を利用できるという システムが維持されています.
本節では, ファイルの利用権限をどのように変更するのか, 実際に操作してみましょう
パーミッションの変更には 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 の所有グループに書き込み権限を付与
|
$ 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" といった文字列のつく名前のファイルやディレクトリの中, あるいは個人的な情報であることが推測できるファイルは, 仮に見れる状態にあっても絶対に見てはいけません. また, 同様に見られては困るファイルを見れる状態で置いておくことも避けましょう. こういったファイルは, 見た方も見られた方も嫌な思いをしてしまいます.
本日必修の実習内容は以上です。お疲れさまでした。
作業終了後はログアウトをお忘れなく。
次のページからは付録ですので時間が余った方は読んで見てください。
次ページへ最終更新日: 2022/04/26(和氣光一) | copyright © 2000-2022 inex |