目標
「パーミッション」の概要について理解する。
「パーミッションの変更方法」について確認する
「所有者の変更方法」について確認する
「所有グループの変更方法」について確認する
パーミッション
パーミッションの概要
パーミッションとは
パーミッションはアクセス権のことで「ユーザー」や「グループ」が『ファイル』や『ディレクトリ』に対して「読み・書き・実行」のどの操作を行えるのかについて指定したものをいいます。
セキュリティモデル
Linuxではファイルやディレクトリは「所有者」と「所有グループ」という情報を持つことになっています。この「所有者」や「所有グループ」の情報を持つことで、「所有者」「所有グループ」「その他のユーザー」の区別が可能になり、パーミッションと併せて各ファイルが、どのユーザーに、どの操作を許可しているかを細かく分けることができます。Linuxではこれをセキュリティモデルのベースとしています。
パーミッションの表記
パーミッションは「lsコマンド」にオプション「l」を利用して表示させることができます。
パーミッションは「所有者」「所有グループ」「その他のユーザー」に対いて、それぞれ「読み・書き・実行」の許可を指定するので、合計で9つの枠を持って表示されます。そして、この9つの枠は3枠ずつ3つの組(ユーザーごとの)に分けられます。
この3つの組は左から「所有者」「所有グループ」「その他のユーザー」を指します。それぞれ、その中で「読み・書き・実行」の権限の有無を確認できます。
パーミッション情報の3枠は左から「読み出しの権限、書き出しの権限、実行の権限」を表しています。権限がある場合はそれぞれアルファベットが記載されていて、権限がない場合は「-」と表示されます。
文字 | 意味 | 詳細 |
r | Read | 読み出しの権限があることを意味します。 |
w | Write | 書き出しの権限があることを意味します。 |
x | Excute | 実行の権限があることを意味します。 |
– | 権限がないことを意味します。 |
このそれぞれの枠は1ビットとなっています。例えば読み出しが「r」書き出しが「-」実行が「x」の表示の場合は「1」「0」「1」となります。この3ビットは8進数で表現されます。
「ファイルの種類」と「その他の情報」
パーミッションの左側の「-」や「d」はファイルの種類を表しています。(この部分はパパーミッションではありません。)Linuxではファイルの種類として次のものがあります。
ファイルの種類 | ls -lコマンドで表示した時の結果 |
普通のファイル(Reguler File) | 「-」 |
ディレクトリファイル | 「d」 |
シンボリックリンク | 「l」 |
キャラクタ型デバイスファイル ※特殊ファイル | 「c」 |
ブロック型デバイスファイル ※特殊ファイル | 「b」 |
その他の情報をまとめると下のようになります。
パーミッションの変更
パーミッションの変更
パーミッションの変更には「chmodコマンド」を利用します。コマンドの後に変更するアクセス権を入力して最後にファイル名を入力します。
chmodコマンド
ファイル・ディレクトリへのパーミッション(アクセス権)を変更するコマンドです。
文法:
chmod [省略できるOP] アクセス権 ファイル名
※OP:オプションのことです。
コマンドの参考資料はこちら
文字列を利用したパーミッションの変更
文字列を利用する場合は、次のオプションを利用します。
【どのユーザーに】
アルファベット文字 | 意味 |
u | 所有者 |
g | グループ |
o | その他のユーザー |
a | 全てのユーザー |
【権限をどのようにするか】
記号 | 意味 |
+ | 権限を追加する |
– | 権限を削除する |
= | 権限を指定する(指定した権限以外は削除されます。) |
【権限の種類】
アルファベット文字 | 意味 |
r | 読み取りの権限 |
w | 書き込みの権限 |
x | 実行の権限 |
s | SetUID/SetGID |
t | スティッキービット |
「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
-rwxr—r—. 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:オプションのことです。
コマンドの参考資料はこちら
ここでは「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」となっています。
[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」に変更されています。
所有グループの変更
所有グループの変更
chgrpコマンド
ファイルの所有グループを変更するコマンドです。
文法:
chgrp [省略できるOP] グループ名 ファイル名(ディレクトリ名)
※OP:オプションのことです。
コマンドの参考資料はこちら
ここでは、「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」に変更されています。
今回は以上になります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。