[ 岡山大学 | 理学部 | 地球科学科 | 地球および惑星大気科学研究室 ]

大気科学演習1

実習

以下は jupiter にリモートログインしてからおこなう

パーミッション

ちょっと難易度高め.


ファイルのモードを確認してみる

ls コマンドに -l のオプションを付けて使う.

$ ls -l

誰にどういう種類のパーミッションがおりているのか確認する. ファイルは誰の持ち物になっているか確認する.

ユーザのアカウント情報を保持している /etc/passwd という,いかにもという名前のファイルがある./etc/passwd のパーミッションをみてみる.

$ ls -l /etc/passwd

表示は

-rw-r--r-- 1 root root 5669 Oct  5 18:42 /etc/passwd

所有者とグループはroot.パーミッションは所有者にreadとwrite,グループにread,その他にread,がそれぞれ許可されている.

その他にreadの許可が出ているということは,誰でも /etc/passwd の中身を見ることができる,ということである. 本当に見えるのかどうか,試してみる

$ cat /etc/passwd

たしかに中身を見ることができる.でも見た感じ,パスワードが書いてあるようには見えない(ちょっとがっかり?).各ユーザのアカウント情報が1行につき1ユーザずつ書いてある.各行は「:」で7つのフィールドに区切られていて,実は2列目がパスワードなのだが,ここが「x」になっているとき,パスワードは /etc/passwd でなく /etc/shadow に格納されている.

/etc/shadow のパーミッションを見てみる.

$ ls -l /etc/shadow

これは

-rw-r----- 1 root shadow 8214 Oct  5 18:42 /etc/shadow

こっちのファイルは,誰でも中身を見ることができるようにはなっていない.他人のパスワードが誰にでも見えるようになっていたら,それはセキュリティに問題ありありで,パスワードを書いたファイルが見えないようになっているのは当然である.

ちなみに,所有者である root にはreadの許可が出ているので,root は /etc/shadow の中身を見ることができる.恥ずかしい文字列のパスワードを設定しているユーザは,それは非常にまずいことだと思ったかもしれないが,/etc/shadow に書き込まれているパスワードは暗号化されているので,見てもパスワードが何であるかわからない(安心しましたか?).

ファイルのモードを変更してみる

パーミッションはファイルのモードと呼ばれたりもする.

パーミッション(ファイルのモード)の変更は chmod コマンドを使う. まず,なにか適当な名前でファイルを作る.

$ echo ikura > sushi.txt
$ ls -l

おそらくこんな感じになる.

-rw-r--r-- 1 george george 6 Oct 15 19:17 sushi.txt

このとき,所有者にreadとwrite,グループにread,その他にread,がそれぞれ許可されている. 中身を見ることができるかどうか確認してみる.

$ cat sushi.txt

自分(user)に対してファイルの中身を見る許可を出さないことにするなら

$ chmod u-r sushi.txt

ls -l を使ってパーミッションが意図したように設定されていることを確認する.

$ ls -l sushi.txt

2文字目の r が - になっていたらよい.

--w-r--r-- 1 george george 6 Oct 15 19:17 sushi.txt

許可されていないファイルの中身を見ようとすると

$ cat sushi.txt
cat: sushi.txt: Permission denied

といって叱られて,ファイルの中身を見ることはできない(もし見ることができたのなら,パーミッションの変更に失敗している).

ユーザだけが中身を見ることができるようにする. まず全員に対してreadを不許可にする.

$ chmod a-r sushi.txt

確認する

$ ls -l sushi.txt

r が全て - になっているはず.

--w------- 1 george george 6 Oct 15 19:17 sushi.txt

次に,自分にだけreadを許可する.

$ chmod u+r sushi.txt

確認する

$ ls -l sushi.txt

どうなっているべきか,わかりますよね?

-rw------- 1 george george 6 Oct 15 19:17 sushi.txt

cat コマンドを使ってファイルの中身を見る.

$ cat sushi.txt

ファイルのコピー再び

自分以外の誰かのファイルをコピーしてみる.例えば,/home/atmos/ipesc/sample/permission にあるファイルをコピーしてみる.

$ ls -l /home/atmos/ipesc/sample/permission

上のコマンドを打って /home/atmos/ipesc/sample/permission のディレクトリにあるファイルの一覧を表示すると,所有者以外にも読み取り許可の出ている yes.txt と,所有者以外には読み取り許可が出ていない no.txt の2つのファイルが見つかるはずである.

読み取り許可の出ているファイルをコピーしてみる.

$ cp /home/atmos/ipesc/sample/permission/yes.txt .

ここではコピー先のファイル名を . と書いているが,このように書くとカレントディレクトリにコピー元と同じ名前のファイルが作られる.すなわちこのコマンドが正しく実行されれば,カレントディレクトリに yes.txt という名前のファイルが生成しているはずである(Permission denied と言われてカレントディレクトリに yes.txt が生成されなかった場合には,カレントディレクトリのパーミッションを確認してみる.カレントディレクトリの書き込み許可がなければファイルを生成することはできない).

ファイルのコピーが生成したかどうか確認する.

$ cat /home/atmos/ipesc/sample/permission/yes.txt
$ cat yes.txt

あるいは,

$ diff /home/atmos/ipesc/sample/permission/yes.txt yes.txt

diff はファイルの中身を比較するコマンドで,指定された2つのファイルの中身で異なる部分があるとそれを出力する(異なる部分がなければ何も出力しない).

もうひとつ,読み取り許可の出ていないファイル no.txt のコピーも試してみる.

$ cp /home/atmos/ipesc/sample/permission/no.txt .

こっちは

cp: cannot open '/home/atmos/ipesc/sample/permission/no.txt' for reading: Permission denied

と言われて,コピーを生成することに失敗する. 理由は Permission denied,意味はわかりますよね?

あと,ファイルが生成されていないことを確認する(何かやったらすぐ確認することを習慣化しましょう).




Last Updated: 2022/10/10, Since: 2019/10/20.
This page is generated by Makefile.rd2html.