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

2020年度 大気科学演習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,がそれぞれ許可されている.

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

$ cat /etc/passwd

たしかに中身を見ることができる.でも見た感じ,パスワードが書いてあるようには見えない(ちょっとがっかり?).各ユーザのアカウント情報が1行につき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 コマンドを使ってファイルの中身を見ようとしてみる.

$ cat sushi.txt

正しくパーミッションが変更(userはファイルの中身を見ることができないに設定)されていれば,

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 .

こっちは Permission denied と言われて,コピーを生成することはできない.




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