Liunx標準教科書 第8章(v304対応)
ユーザ権限とアクセス権
8.1 ファイルの所有権と所有グループ
ファイル作成者のユーザ ID とグループ ID がファイルの所有者と所有グループとなります。ファイルの情報として重要な属性です。
8.1.1 所有者の変更
ファイルの所有者を変更するには chown コマンドを使います。また変更するには root ユーザである必要があります。-R オプションでディレクトリを対象にします。ディレクトリの中のディレクトリやファイルを再帰的にたどって変更します。
実習: 一般ユーザと root ユーザでファイル所有者を変更
$ touch user
$ ls -l user
-rw-rw-r– 1 vagrant vagrant 0 1月 1 12:15 user
$ chown nobody user
chown: `user’ の所有者を変更中: 許可されていない操作です
$ su
パスワード:
# chown nobody user
# ls -l user
-rw-rw-r– 1 nobody vagrant 0 1月 1 12:15 user
8.1.2 所有グループの変更
グループを変更するには chgrp コマンドを使います。ディレクトリとファイルは区別なく変更できます。 -R オプションでディレクトリを対象にします。ディレクトリやファイルを再帰的に変更します。
実習: 一般ユーザと root ユーザでファイル所有グループを変更
$ touch group
$ ls -l group
-rw-rw-r– 1 vagrant vagrant 0 1月 2 00:45 group
$ chgrp nobody group
chgrp: `group’ のグループを変更中: 許可されていない操作です
$ su
パスワード:
# chgrp nobody group
# ls -l group
-rw-rw-r– 1 vagrant nobody 0 1月 2 00:45 group
8.2 ファイルとアクセス権
ファイルは⑴ファイルを所有するユーザ、⑵ファイル所有グループからファイル所有者を除いたユーザ、⑶その他のユーザの3つのレベルで権限を設定できます。3つのレベル毎に読み、書き、実行の3つの権限があります。
8.2.1 ファイルに設定できるアクセス
rwx は、ユーザとグループとその他の3つに対して指定できます。ファイル種別に d が表示されればディレクトリを意味し – が表示されればファイルを意味します。 r が表示されればファイルの読み書きが可能で、 w が表示されればファイルの書き込みが可能です。 x が表示されればファイルをプログラムとして実行できるか、または、ディレクトリであればディレクトリへ移動できます。
実習: ファイル所有グループの確認
# cd /home/vagrant
# ls -l .bashrc
-rw-r–r–. 1 vagrant vagrant 231 3月 5 2015 .bashrc
# ls -l /usr
合計 132
dr-xr-xr-x. 2 root root 20480 12月 31 15:51 bin
drwxr-xr-x. 2 root root 6 6月 10 2014 etc
drwxr-xr-x. 2 root root 6 6月 10 2014 games
drwxr-xr-x. 45 root root 8192 7月 16 2015 include
dr-xr-xr-x. 28 root root 4096 12月 31 15:51 lib
dr-xr-xr-x. 47 root root 24576 12月 31 15:51 lib64
drwxr-xr-x. 15 root root 4096 7月 16 2015 libexec
drwxr-xr-x. 12 root root 4096 7月 16 2015 local
dr-xr-xr-x. 2 root root 16384 12月 31 15:52 sbin
drwxr-xr-x. 80 root root 4096 12月 31 15:51 share
drwxr-xr-x. 4 root root 55 12月 31 15:51 src
lrwxrwxrwx. 1 root root 10 7月 16 2015 tmp -> ../var/tmp
8.2.2 アクセス権の変更
ファイルのアクセス権を変更するにはchmod コマンドを使います。モード指定の書き方で次の2通りの記述方法があります。
・モードの書式を複数書き、カンマを区切って指定。
・8進数3桁各ユーザのレベルを指定。
モードは u (所有ユーザ)、g (所有グループ)、o (その他のユーザ) に対して、r(読み)、w(書き)、x (実行またはディレクトリの変更)を設定したり ( = )、加えたり ( + ) 、取り消したり ( – )します。u, g, o の全てに同じ権限を指定するときは a を指定します。
実習: ファイルモードの変更
ファイルのモードを変更し確認します。
-r w – r – – r – – を r w – r w – r – – g+w とします。
-r w – r w – r – – を – – w – r w – r w – u-r,o+w とします。
$ touch chownfile
$ ls -l chownfile
-rw-rw-r– 1 vagrant vagrant 0 1月 2 04:55 chownfile
$ chmod u-r,g-w,o+w chownfile
$ ls -l chownfile
–w-r–rw- 1 vagrant vagrant 0 1月 2 04:55 chownfile
$ chmod go+x chownfile
$ ls -l chownfile
–w-r-xrwx 1 vagrant vagrant 0 1月 2 04:55 chownfile
実習: ファイルモードを8進数で変更
ユーザのファイルのモードを確認します。ファイルのモードを変更し、モードを再確認してくだ さい。-rw-rw-r–としたい場合は 8 進数の 664 を指定し、–w-rw-rw-としたい場合は 8 進数の 266 を指定し、–w-rwxrwx としたい場合は 8 進数の 277 を指定してください。
実習: ファイルモードでsetuid/ setgid/ sticky の変更・確認
setuid ( SUID )ビットあるいは setgid( SGID ) ビットがついたプログラムを実行すると、ファイル所有者あるいは所有グループの権限で実行されます。具体的には、root ユーザ所有で setuid ビットがセットされたプログラムは、一般ユーザが実行した場合でも root ユーザが実行した場合と同じ動作をします。 sticky ビットがついたディレクトリ内の所有者以外が削除できなくなります( Linux では、ファイルについてのスティッキービットは無視されます)。Linux では一般的に /tmp ディレクトリにスティッキービットが付与されています。
$ touch idbitfile ファイルを作成
$ ls -l idbitfile
-rw-rw-r– 1 vagrant vagrant 0 1月 12 11:52 idbitfile
$ chmod u+s idbitfile setuidビットを追加
$ ls -l idbitfile
-rwSrw-r– 1 vagrant vagrant 0 1月 12 11:52 idbitfile
$ chmod u-s,g+s idbitfile setuidビットを除去setgidビットを追加
$ ls -l idbitfile
-rw-rwSr– 1 vagrant vagrant 0 1月 12 11:52 idbitfile
$ chmod +t idbitfile sticky(スティッキー)ビットを追加
$ ls -l idbitfile
-rw-rwSr-T 1 vagrant vagrant 0 1月 12 11:52 idbitfile
8.2.3 ファイルの作成モード
ファイルを新規に作成すると、ユーザごとに規定されたパーミッションである 644、もしくは 664 といったパーミッションが設定されてファイルが作成されます。umask コマンドを使うことで、指定したパーミッションでファイルを作成するように制限できます。
現在のマスク値を表示・・・ umask コマンドに続けてマスク値を指定しなかった場合、現在のマスク値を表示できます。
マスク値を変更・・・ umask コマンドに続けてマスク値を指定すると、コマンドを実行後に作成されるファイルが指定したパーミッションで作成されます。umask コマンドは許可しないビットを指定します。umask コマンドで指定するマスク値は、全てのユーザが読み書き出来るパーミッション 666 から、設定したいパーミッションを引き算することでマスク値を求めることができます。ディレクトリは 777 からになります。
実習: umask を変更してファイルを作成
$ umask
0002
$ touch umask0002
$ umask 070
$ umask 072
$ touch umask0072
$ ls -l umask00*
-rw-rw-r– 1 vagrant vagrant 0 1月 15 08:42 umask0002
-rw—-r– 1 vagrant vagrant 0 1月 15 08:44 umask0072
touch コマンドはモードが 0666のファイルを作ろうとしますが、umask によりマスクされるために上記のモードのようなファイルができます。 -S オプションを付けると、モードを表示または設定するとき、8進数でなく意味がわかりやすい形式を利用できます。
$ umask -S
u=rwx,g=,o=rx
$ touch umask0022
$ umask -S u=rw,g=,o=rw
u=rw,g=,o=rw
$ touch umask0070
$ ls -l umask00*
-rw-rw-r– 1 vagrant vagrant 0 1月 15 08:42 umask0002
-rw—-r– 1 vagrant vagrant 0 1月 15 08:56 umask0022
-rw—-rw- 1 vagrant vagrant 0 1月 15 08:57 umask0070
-rw—-r– 1 vagrant vagrant 0 1月 15 08:44 umask0072
umask コマンドによるモードの制限は、umask コマンドを実行したシェル内でしか有効出ないことに注意して下さい。デフォルトのモードは .bashrc 等のログインシェル内で設定する事ができます。
8.3 章末テスト
(1)以下のコマンドを実行した場合の実行結果を選びなさい
# umask 022
# touch test
# chgrp nobody test
# ls -l test
- -rw-r–r–. 1 nobody root 0 12月 8 17:18 test
- -rw-rw-r– 1 root nobody 0 12月 8 17:18 test
- -rw-r–r–. 1 root nobody 0 12月 8 17:18 test
- -rw-r–r–. 1 nobody test 0 12月 8 17:18 test
(2)chownfile のファイルモードを 755 にするためのコマンドを記述しなさい。
(3)chownfile のファイルモードを 644 にするためのコマンドを記述しなさい。
(4)umask 070 にしたあと umask ファイルを作成した場合に設定されるファイルモードは以下のどれでしょうか?
(5)umask 022 にした後 umask ファイルを作成した場合に設定されるファイルモードは以下のどれでしょうか?
- -rw—-rw-. 1 user user 0 12月 8 17:18 umask
- -rw—-r–. 1 user user 0 12月 8 17:18 umask
- -rw——-. 1 user user 0 12月 8 17:18 umask
- -rw-r–r–. 1 user user 0 12月 8 17:18 umask
テキストと問題集の購入は下記の画像をクリックして下さい。
章末テスト解答
(1)3
(2)chmod 755 chowonfile
(3)chmod 644 chowonfile
(4)1
(5)4