Linuxのアクセス権限(パーミッション)を理解する

こんにちは、皆さん。今回の記事ではLinuxファイルシステムでのファイル・ディレクトリのアクセス権限(パーミッション)についての理解を深めていきたいと思います。Windowsを使用するさいはあまりフォルダやファイルへのアクセス権限について考える機会は少ないですが、Linuxを快適に使用するにはこのアクセス権限について知っておくことは必須と言えます。本記事内では「Linuxの基礎コマンド」の学習を済ませいていることを前提として解説していきますので、まだの方は必ず目を通しておいて下さい。

あわせて読みたい
Linuxの基礎コマンド Linuxの学習を進めていくにあたり、基本的なコマンドは必須の知識となります。本記事では初学者が最初に知っておくべきコマンドについて解説していきます。ここでの学習...
目次

ディレクトリ・ファイルの所有者は製作者のもの

EC2インスタンスにログイン後、ホームディレクトリ内でディレクトリやフィアルを作成してみましょう。ls -l コマンドで以下のような出力をしてみてください。

[ec2-user@www test]$ ls -l
total 0
drwxrwxr-x 2 ec2-user ec2-user 6 Feb 26 05:33 mydir
-rw-rw-r-- 1 ec2-user ec2-user 0 Feb 26 05:31 test1.txt
-rw-rw-r-- 1 ec2-user ec2-user 0 Feb 26 05:31 test2.txt

ファイルの所有者

まず初めに、EC2インスタンスにSSH接続してログインした際に使用したec2-userの名前があることに気が付くと思います。左側が所有者ユーザ名、右側が所有グループとなります。Linuxユーザは作成された時にデフォルトで自分のユーザグループに所属していることはすでに学習しましたね。ディレクトリ・ファイルを作成すると作成したユーザとユーザ自身のユーザグループが所有者として設定されます。

ファイルタイプ

一番左側の1文字がファイルタイプを表します。「d」はディレクトリ、「-」はファイルを意味します。「l」は今後学習するシムリンクと呼ばれるファイルタイプを表します。

パーミッション

ファイルタイプの後に続く文字列はパーミッションと呼ばれるディレクトリやファイルに対するアクセス権限を表したものになります。3文字ずつのグループに分られ、それぞれ「所有者(user)」、「所有グループ(group)」、「その他(others)」を意味します。そして、3文字ずつそれぞれ左から「読み取り(r=read)」、「書き込み(w=write)」、「プログラムの実行(x=execute)」を表します。

【アクセス権限の表示フォーマット】
[ 所有者の読取り・書込み・実行 ][所有グループの読取り・書込み・実行 ][ その他ユーザの読取り・書込み・実行 ]

「rwxrwxr-x」は所有者と所有グループには全てのパーミッションがあり、その他ユーザは読み取りと実行権限はあるが書き込み権限がない、と言えます。「rw-rw-r–」は所有者と所有グループは読み取りと書き込みはできて、その他ユーザは読み取りのみ可能という権限になっています。

原則として他のユーザが作成したディレクトリやファイルは権限がない場合はアクセスしたり変更したりすることはできません。しかし、ディレクトリ・ファイルの所有者が明示的に所属する所有グループやその他ユーザへの権限を変更することが可能です。

ルートユーザは何でもできる

ルートユーザは最高管理者権限のユーザなのでどのユーザのディレクトリ・ファイルの変更・削除することも可能です。またディレクトリ・ファイルのパーミッションの変更も可能です。一般ユーザのec2-userのままsudoコマンドと共に所有者の変更とパーミッションの変更をしてみましょう。

所有者の変更

所有者の権限を変える場合はchown(change owner)コマンドを使用します。以下の例ではnobodyというデフォルトのユーザを使用して所有者と所有グループをec2-userからnobodyに変更しています。

グループ名の指定にはセミコロン(:)が必要なので忘れないように注意しましょう。

【所有者のみを変える場合】
sudo chown nobody test1.txt

【グループのみを変える場合】
sudo chown :nobody test1.txt

【所有者とグループの両方を同時に変える場合】
sudo chown nobody:nobody test1.txt

権限の変更

パーミッションの変更にはchmod(change mode)コマンドを使用します。コマンドオプションは「対象者±権限」のフォーマットで記述します。実行後は ls -l コマンドを使用して変更を確認しましょう。

【others に write 権限を追加】
sudo chmod o+w test2.txt

【others の write 権限を削除】
sudo chmod o+w test2.txt

【user と group に execute 権限を追加】
sudo chmod ug+x test2.txt

【all user に read 権限を追加】
sudo chmod a+r test2.txt

ディレクトリとファイルで読み取りと実行権限の意味が異なる

パーミッションのxはディレクトリとファイルで意味が異なります。

ファイルの場合は、読み取り(r)権限がないとファイルの中身を見ることができません。また、実行(x)権限がないとスクリプトファイルのプログラム、例えば run.sh ファイルなど、の実行ができません。

ディレクトリの場合、読み取り(r)はディレクトリファイルへのアクセスを意味するもの名で、読み取り権限がないと、lsコマンドでファイルのリスト表示ができなくなります。cdコマンドでディレクトリに移動は通常通りできます。ファイルのリスト表示ができないからと言ってファイルがなくなったわけではないので、ファイルまでのパスを指定すればファイルの中身自体にアクセスすることは可能です。この場合、ディレクトリファイルにアクセスができないので、ファイル名のタブ補完はできません。なので、ファイル名を正確に覚えておかないと直接アクセスすることはできないでしょう。

また、ディレクトリの場合、実行(x)権限はディレクトリへの移動を意味するので、実行権限がない場合はcdコマンドでディレクトリへ移動すること自体ができなくなります。ただし、ディレクトリファイルへのアクセスは可能なので、lsコマンドで実行権限のないディレクトリをした場合はファイルのリストは表示されます。ただし、ファイルの詳細情報については?マーク表示になります。

繰り返しになりますが、ルートユーザの場合はこれらディレクトリやファイルの所有者やパーミッションの制限を受けません。

まとめ

今日は、Linuxのディレクトリやファイルにアクセスする際のパーミッションについて理解を深めていきました。ファイルタイプや所有者、所有グループ、その他ユーザにアクセス権限を設定できましたね。権限には読み取り、書き込み、実行の3つがあり、実行権限はディレクトリとファイルで意味が違うことも学習しました。所有者・所有グループの変更コマンド(chown)や、パーミッション変更(chmod)のコマンドも練習しました。ルートユーザに関しては管理者ユーザなので権限の制限は受けないことも再確認しました。今回学んだ知識は今後インフラとしてLinuxを使用していく際の強力な武器となります。しっかり復習もしておきましょう。

次回は「Linux|VIMエディタの使い方」について学習していきます。

あわせて読みたい
Linux|VIMエディタの使い方 こんにちは皆さん、本日はLinuxのVIMエディタの使い方について解説していきます。vim コマンドはターミナル上でファイルの作成をしたり編集をしたりする機能を持ちます...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次