09-Linux & Virtual Box

Virtual Box & Linux(Part.17)| Linux ファイルの管理(2)【パーミッション】| 現役エンジニア&プログラミングスクール講師

目標

「パーミッション」の概要について理解する。
「パーミッションの変更方法」について確認する
「所有者の変更方法」について確認する
「所有グループの変更方法」について確認する

パーミッション

パーミッションの概要

パーミッションとは

パーミッションはアクセス権のことで「ユーザー」や「グループ」が『ファイル』や『ディレクトリ』に対して「読み・書き・実行」のどの操作を行えるのかについて指定したものをいいます。

セキュリティモデル

Linuxではファイルやディレクトリは「所有者」と「所有グループ」という情報を持つことになっています。この「所有者」や「所有グループ」の情報を持つことで、「所有者」「所有グループ」「その他のユーザー」の区別が可能になり、パーミッションと併せて各ファイルが、どのユーザーに、どの操作を許可しているかを細かく分けることができます。Linuxではこれをセキュリティモデルのベースとしています。

パーミッションの表記

パーミッションは「lsコマンド」にオプション「l」を利用して表示させることができます。

パーミッションは「所有者」「所有グループ」「その他のユーザー」に対いて、それぞれ「読み・書き・実行」の許可を指定するので、合計で9つの枠を持って表示されます。そして、この9つの枠は3枠ずつ3つの組(ユーザーごとの)に分けられます。

この3つの組は左から「所有者」「所有グループ」「その他のユーザー」を指します。それぞれ、その中で「読み・書き・実行」の権限の有無を確認できます。

パーミッション情報の3枠は左から「読み出しの権限、書き出しの権限、実行の権限」を表しています。権限がある場合はそれぞれアルファベットが記載されていて、権限がない場合は「-」と表示されます。

文字意味詳細
rRead読み出しの権限があることを意味します。
wWrite書き出しの権限があることを意味します。
xExcute実行の権限があることを意味します。
権限がないことを意味します。

このそれぞれの枠は1ビットとなっています。例えば読み出しが「r」書き出しが「-」実行が「x」の表示の場合は「1」「0」「1」となります。この3ビットは8進数で表現されます。

8進数は10進数に置き換えたとき「0」から「7」までの数値を扱うことが可能です。

8進数111110101100011010001000
10進数76543210

これを利用して3ユーザーのパーミッションを「755」や「664」と表現することができます。イラストで表現すると次のようになります。

8進数で考えにくい場合は単純に
「r」 は「4」・「w」は「2」・「x」 は「1」・「ー」 は「0」
と覚えるといいと思います。

「ファイルの種類」と「その他の情報」

パーミッションの左側の「-」や「d」はファイルの種類を表しています。(この部分はパパーミッションではありません。)Linuxではファイルの種類として次のものがあります。

ファイルの種類ls -lコマンドで表示した時の結果
普通のファイル(Reguler File)「-」
ディレクトリファイル「d」
シンボリックリンク「l」
キャラクタ型デバイスファイル 
※特殊ファイル
「c」
ブロック型デバイスファイル
※特殊ファイル
「b」

パーミッションの右側に表示される「.」ドットはACL(アクセスコントロールリスト)を意味します。ACLが追加されると「+」になります。一般的にはあまり利用されません。

その他の情報をまとめると下のようになります。

パーミッションの変更

パーミッションの変更

パーミッションの変更には「chmodコマンド」を利用します。コマンドの後に変更するアクセス権を入力して最後にファイル名を入力します。

chmodコマンド

ファイル・ディレクトリへのパーミッション(アクセス権)を変更するコマンドです
文法:
chmod  [省略できるOP] アクセス権 ファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら

アクセス権には「文字列を利用するパターン」と「数値を利用するパターン」があります。

ディレクトリに対してはその中身のファイルまで再帰的に権限を変更する場合にオプション「R」を利用します。

文字列を利用したパーミッションの変更

文字列を利用する場合は、次のオプションを利用します。

【どのユーザーに】

アルファベット文字意味
u所有者
gグループ
oその他のユーザー
a全てのユーザー

【権限をどのようにするか】

記号意味
+権限を追加する
権限を削除する
=権限を指定する(指定した権限以外は削除されます。)

【権限の種類】

アルファベット文字意味
r読み取りの権限
w書き込みの権限
x実行の権限
sSetUID/SetGID
tスティッキービット

「SetUID」や「SetGID」は本来、所有者や所有グループが行う操作のうち、一部を個別のユーザーに操作させたいなどの時に設定します。

「SetUID」を利用した例として、パスワード変更があります。

パスワード変更は「rootユーザー」のみが読み書きできる「/etc/shadowファイル」を変更することになりますが、一般ユーザーでも、自分のパスワードは変更可能になっています。

これは、「/etc/shadowファイル」に対して変更を行うpasswdコマンドの実行ファイルで「所有者の実行権限」についてパーミッションが「s」となっているからです。

この「s」が付くことによって、一般ユーザーで実行された操作であってもファイルの所有者である「rootユーザー」の権限で実行されるようになります。

「スティッキービット」は「/tmp」など、アプリケーションが利用する(誰でも利用できる)ディレクトリについて、制限付きでファイルを削除できる権限のことです。「制限付き」とは、誰でも利用できるディレクトリの中でファイルの削除については所有しているファイルのみ削除が行えるということを意味しています。

「ls -l」でrockyと付くファイルのパーミッションを確認してみます。

[rocky001@rockylinux001 ~]$ ls -l rocky*
-rw-rw-r–. 1 rocky001 rocky001 1024 May 3 10:10 rocky.cpio
-rw-rw-r–. 1 rocky001 rocky001 226 Apr 25 16:24 rocky1.txt
-rw-rw-r–. 1 rocky001 rocky001 87 May 2 18:56 rocky1.txt.gz
-rw-rw-r–. 1 rocky001 rocky001 194 Apr 28 19:51 rocky1copy.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt
-rw-rw-r–. 1 rocky001 rocky001 226 May 3 11:02 rocky6.txt

ここで。「rocky5.txt」のパーミッションを文字列で変更してみようと思います。
オプション「a」で全てのユーザーに対して「+x」で実行権限を追加したいと思います。

[rocky001@rockylinux001 ~]$ chmod a+x rocky5.txt
[rocky001@rockylinux001 ~]$ ls -l rocky5.txt
-rwxrwxr-x. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt

次はオプション「go」で所有グループとその他のユーザーに対して「-wx」で書き込み権限と実行権限を削除したいと思います。
[rocky001@rockylinux001 ~]$ chmod go-wx rocky5.txt
[rocky001@rockylinux001 ~]$ ls -l rocky5.txt
-rwxrr. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt

続けてオプション「a」で全てのユーザーに対して「=r」で読み込み権限のみを指定したいと思います。
[rocky001@rockylinux001 ~]$ chmod a=r rocky5.txt
[rocky001@rockylinux001 ~]$ ls -l rocky5.txt
r–r–r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt

数値を利用したパーミッションの変更

数値を利用す場合は、8進数(3ビット)を10進数に置き換えた数値を使います。

ここでは数値(絶対値)を指定して「rocky5.txt」の権限をもとの「rw-rw-r–」に戻したいと思います。

[rocky001@rockylinux001 ~]$ chmod 664 rocky5.txt
[rocky001@rockylinux001 ~]$ ls -l rocky5.txt
rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt

SetUIDがセットされているファイルの確認

ここでは、「/etc/shadowファイル」に対して変更を行うpasswdコマンドの実行ファイルのパーミッションを確認して実際に「s」となっているかを確認してみたいと思います。

[rocky001@rockylinux001 ~]$ ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32656 May 15 2022 /usr/bin/passwd

SetUIDが設定されています。

スティッキービットがセットされているディレクトリの確認

ここでは、「/tmpディレクトリ」のパーミッションを確認して実際にその他のユーザーの実行権限が「t」となっているかを確認してみたいと思います。

[rocky001@rockylinux001 ~]$ ls -ld /tmp
drwxrwxrwt. 12 root root 4096 May 11 22:20 /tmp

「t」が設定されています。

所有者と所有グループの変更

所有者の変更

所有者の変更

chownコマンド

ファイルの所有者を変更するコマンドです
文法:
chown  [省略できるOP] ユーザー名 [:グループ] ファイル名(ディレクトリ名)
※OP:オプションのことです。
コマンドの参考資料はこちら

chownは「CHange OWNer」の略です。このコマンドはスーパーユーザーでなければ実行できません。

ここでは「rocky1.txt」の所有者と所有グループを変更してみたいと思います。
まずは「ls -l」で現在の所有者・所有グループを確認します。

[rocky001@rockylinux001 ~]$ ls -l rocky*
-rw-rw-r–. 1 rocky001 rocky001 1024 May 3 10:10 rocky.cpio
-rw-rw-r–. 1 rocky001 rocky001 226 Apr 25 16:24 rocky1.txt
-rw-rw-r–. 1 rocky001 rocky001 87 May 2 18:56 rocky1.txt.gz
-rw-rw-r–. 1 rocky001 rocky001 194 Apr 28 19:51 rocky1copy.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt
-rw-rw-r–. 1 rocky001 rocky001 226 May 3 11:02 rocky6.txt

現在所有者は「rocky001」所有グループは「rocky001」となっています。

chownコマンドはスーパーユーザーでないと実行できないので「sudo」を利用しています。入力後はパスワードを求められます。一般ユーザーのパスワードを入力します。


[rocky001@rockylinux001 ~]$ sudo chown root:students rocky1.txt
[sudo] password for rocky001:一般ユーザーのパスワードの入力
[rocky001@rockylinux001 ~]$ ls -l rocky*
-rw-rw-r–. 1 rocky001 rocky001 1024 May 3 10:10 rocky.cpio
-rw-rw-r–. 1 root students 226 Apr 25 16:24 rocky1.txt
-rw-rw-r–. 1 rocky001 rocky001 87 May 2 18:56 rocky1.txt.gz
-rw-rw-r–. 1 rocky001 rocky001 194 Apr 28 19:51 rocky1copy.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt
-rw-rw-r–. 1 rocky001 rocky001 226 May 3 11:02 rocky6.txt

所有者が「root」所有グループが「students」に変更されています。

studentsグループは以前のグループ追加の記事で作成したグループです。

所有グループの変更

所有グループの変更

chgrpコマンド

ファイルの所有グループを変更するコマンドです
文法:
chgrp  [省略できるOP] グループ名 ファイル名(ディレクトリ名)
※OP:オプションのことです。
コマンドの参考資料はこちら

chgrpは「CHange GRouP」の略です。このコマンドは一般ユーザーでも利用できます。但し、その場合に変更できるグループは実行するユーザーが所属しているグループのみとなります。スーパーユーザーの場合はどのグループにも変更が可能です。

ここでは、「sudo chgrp」を利用して「rocky1.txt」の所有グループを変更してみたいと思います。まずは現在の所有グループを確認します。

[rocky001@rockylinux001 ~]$ ls -l rocky*
-rw-rw-r–. 1 rocky001 rocky001 1024 May 3 10:10 rocky.cpio
-rw-rw-r–. 1 root students 226 Apr 25 16:24 rocky1.txt
-rw-rw-r–. 1 rocky001 rocky001 87 May 2 18:56 rocky1.txt.gz
-rw-rw-r–. 1 rocky001 rocky001 194 Apr 28 19:51 rocky1copy.txt
-rw-rw-r–. 1 rocky001 rocky001 0 Apr 24 15:20 rocky5.txt
-rw-rw-r–. 1 rocky001 rocky001 226 May 3 11:02 rocky6.txt

コマンドを利用して所有グループを変更します。
[rocky001@rockylinux001 ~]$ sudo chgrp rocky001 rocky1.txt
[sudo] password for rocky001:一般ユーザーのパスワードの入力
[rocky001@rockylinux001 ~]$ ls -l rocky1.txt
-rw-rw-r–. 1 root rocky001 226 Apr 25 16:24 rocky1.txt

所有グループが「rocky001」に変更されています。

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
09-Linux & Virtual Box

Virtual Box & Linux(Part.20)| Linux プロセスの管理(2)| 現役エンジニア&プログラミングスクール講師

2023年5月20日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
09-Linux & Virtual Box

Virtual Box & Linux(Part.14)| Linux ユーザー管理(2)| 現役エンジニア&プログラミングスクール講師

2023年5月2日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
09-Linux & Virtual Box

Virtual Box & Linux(Part.3)| Linux管理ツール「Cockpit」の有効化 | 現役エンジニア&プログラミングスクール講師

2023年4月21日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
09-Linux & Virtual Box

Virtual Box & Linux(Part.10)| Linux テキスト処理(2)| 現役エンジニア&プログラミングスクール講師

2023年4月28日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
09-Linux & Virtual Box

Virtual Box & Linux(Part.16)| Linux ファイル管理(1)| 現役エンジニア&プログラミングスクール講師

2023年5月8日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
09-Linux & Virtual Box

Virtual Box & Linux(Part.15)| Linux ユーザー管理(3)| 現役エンジニア&プログラミングスクール講師

2023年5月7日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site