Linuxでは、ファイルのアクセス許可、属性、および所有権によって、システムプロセスとユーザーがファイルに対して持つ必要のあるアクセスレベルが制御されます。これにより、許可されたユーザーとプロセスのみが特定のファイルとディレクトリにアクセスできるようになります。
Linuxファイルのパーミッション#
基本的なLinuxパーミッションモデルは、各システムファイルを所有者とグループに関連付け、3つの異なるクラスのユーザーにパーミッションアクセス権を割り当てることで機能します。
- ファイルの所有者。
- グループメンバー。
- その他(その他すべて)
ファイルの所有権は、chown
を使用して変更できます およびchgrp
コマンド。
ユーザーの各クラスには、次の3つのファイル権限タイプが適用されます。
- 読み取り許可。
- 書き込み許可。
- 実行権限。
この概念により、ファイルの読み取り、ファイルへの書き込み、またはファイルの実行を実行できるユーザーを制御できます。
ファイルのアクセス許可を表示するには、ls
を使用します コマンド:
ls -l file_name
-rw-r--r-- 12 linuxize users 12.0K Apr 28 10:10 file_name
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
最初の文字はファイルタイプを示します。通常のファイルにすることができます(-
)、ディレクトリ(d
)、シンボリックリンク(l
)、またはその他の特殊なタイプのファイル。次の9文字はファイルのアクセス許可を表し、それぞれ3文字の3つのトリプレットです。最初のトリプレットは所有者のアクセス許可を示し、2番目のトリプレットはグループのアクセス許可を示し、最後のトリプレットは他のすべてのユーザーのアクセス許可を示します。
上記の例では(rw-r--r--
)は、ファイル所有者が読み取りおよび書き込み権限(rw-
)を持っていることを意味します )、グループおよびその他のユーザーには読み取り権限(r--
)のみがあります 。
ファイルのアクセス許可は、ファイルの種類によって意味が異なります。
3つのパーミッショントリプレットはそれぞれ、次の文字で構成でき、ファイルに設定されているかディレクトリに設定されているかによって、効果が異なります。
ファイルに対する権限の影響
許可 | キャラクター | ファイルの意味 |
---|---|---|
読む | - | ファイルが読み取れません。ファイルの内容を表示することはできません。 |
r | ファイルは読み取り可能です。 | |
書き込み | - | ファイルを変更または変更することはできません。 |
w | ファイルは変更または変更できます。 | |
実行 | - | ファイルを実行できません。 |
x | ファイルを実行できます。 | |
s | user で見つかった場合 トリプレット、setuid を設定します 少し。 group で見つかった場合 トリプレット、setgid を設定します 少し。また、x フラグが設定されています。setuid の場合 またはsetgid 実行可能ファイルにフラグが設定され、ファイルはファイルの所有者またはグループ、あるいはその両方の特権で実行されます。 | |
S | s と同じ 、ただしx フラグが設定されていません。このフラグがファイルで使用されることはめったにありません。 | |
t | others で見つかった場合 トリプレット、sticky を設定します ビット。これは、 x も意味します フラグが設定されます。このフラグはファイルでは役に立ちません。 | |
T | と同じ、t しかし、x フラグが設定されていません。このフラグはファイルでは役に立ちません。 |
ディレクトリ(フォルダ)に対する権限の影響
ディレクトリは、他のファイルやディレクトリを含めることができる特殊なタイプのファイルです。
許可 | キャラクター | ディレクトリでの意味 |
---|---|---|
読む | - | ディレクトリの内容を表示できません。 |
r | ディレクトリの内容を表示できます。 (例: ls を使用してディレクトリ内のファイルを一覧表示できます 。) | |
書き込み | - | ディレクトリの内容は変更できません。 |
w | ディレクトリの内容は変更できます。 (例:新しいファイルを作成したり、ファイルを削除したりできます) | |
実行 | - | ディレクトリをに変更することはできません。 |
x | ディレクトリはcd を使用してナビゲートできます 。 | |
s | user で見つかった場合 トリプレット、setuid を設定します 少し。 group で見つかった場合 トリプレットsetgid を設定します 少し。また、x フラグが設定されます。 setgid の場合 フラグがディレクトリに設定されている場合、そのディレクトリ内に作成された新しいファイルは、ファイルを作成したユーザーのプライマリグループIDではなくディレクトリグループID(GID)を継承します。setuid ディレクトリには影響しません。 | |
S | s と同じ 、ただしx フラグが設定されていません。このフラグはディレクトリでは役に立ちません。 | |
t | others で見つかった場合 トリプレット、sticky を設定します ビット。これは、 x も意味します フラグが設定されます。ディレクトリにスティッキービットが設定されている場合、ファイルの所有者、ディレクトリの所有者、または管理者ユーザーのみが、ディレクトリ内のファイルを削除または名前変更できます。 | |
T | t と同じ 、ただしx フラグが設定されていません。このフラグはディレクトリでは役に立ちません。 |
ファイルのアクセス許可を変更する#
ファイルのアクセス許可は、chmod
を使用して変更できます 指図。ファイルの権限を変更できるのは、root、ファイル所有者、またはsudo権限を持つユーザーのみです。 chmod
を使用するときは特に注意してください 、特に権限を再帰的に変更する場合。このコマンドは、スペースで区切られた1つ以上のファイルやディレクトリを引数として受け入れることができます。
権限は、シンボリックモード、数値モード、または参照ファイルを使用して指定できます。
シンボリック(テキスト)メソッド#
chmod
の構文 シンボリックモードを使用する場合のコマンドの形式は次のとおりです。
chmod [OPTIONS] [ugoa…][-+=]perms…[,…] FILE...
フラグの最初のセット([ugoa…]
)、usersフラグは、ファイルへのアクセス許可が変更されるユーザーのクラスを定義します。
-
u
-ファイルの所有者。 -
g
-グループのメンバーであるユーザー。 -
o
-他のすべてのユーザー。 -
a
-すべてのユーザー、ugo
と同じ 。
ユーザーのフラグを省略すると、デフォルトでa
になります。 。
フラグの2番目のセット([-+=]
)、操作フラグは、権限を削除、追加、または設定するかどうかを定義します。
-
-
-指定された権限を削除します。 -
+
-指定された権限を追加します。 -
=
-現在の権限を指定された権限に変更します。=
の後に権限が付与されていない場合 シンボル、指定されたユーザークラスからのすべての権限が削除されます。
権限(perms...
)は、ゼロまたは次の文字の1つ以上を使用して明示的に設定されます:r
、w
、x
、X
、s
、およびt
。セットu
から1文字を使用します 、g
、およびo
あるユーザーのクラスから別のユーザーのクラスに権限をコピーする場合。
複数のユーザークラスに権限を設定する場合([,…]
)、シンボリックモードを区切るには、コンマ(スペースなし)を使用します。
chmod
の使用方法の例を次に示します。 シンボリックモードのコマンド:
-
グループのメンバーにファイルを実行する権限を与えますが、ファイルの読み取りと書き込みは許可しません:
chmod g=x filename
-
すべてのユーザーの書き込み権限を削除します:
chmod a-w filename
-
他のユーザーの実行権限を再帰的に削除します:
chmod -R o-x dirname
-
ファイルの所有者を除くすべてのユーザーの読み取り、書き込み、および実行のアクセス許可を削除します。
chmod og-rwx filename
次のフォームを使用して同じことを実行することもできます。
chmod og= filename
-
ファイルの所有者に読み取り、書き込み、実行の権限を付与し、ファイルのグループに読み取り権限を付与し、他のすべてのユーザーには権限を付与しません。
chmod u=rwx,g=r,o= filename
数値法#
chmod
の構文 シンボリックモードを使用する場合のコマンドの形式は次のとおりです。
chmod [OPTIONS] NUMBER FILE...
数値モードを使用する場合、3つのユーザークラスすべて(所有者、グループ、およびその他すべて)の権限を同時に設定できます。
許可番号は3桁または4桁の数字にすることができます。 3桁の数字を使用する場合、最初の数字はファイルの所有者の権限、2番目の数字はファイルのグループ、最後の数字は他のすべてのユーザーの権限を表します。
各書き込み、読み取り、および実行のアクセス許可には、次の数値があります。
-
r
(読み取り)=4 -
w
(書き込み)=2 -
x
(実行)=1 - 権限なし=0
特定のユーザークラスのアクセス許可番号は、そのグループのアクセス許可の値の合計で表されます。
数値モードでのファイルの権限を確認するには、すべてのユーザーのクラスの合計を計算するだけです。たとえば、ファイルの所有者に読み取り、書き込み、実行のアクセス許可を与え、ファイルのグループに読み取りと実行のアクセス許可を与え、他のすべてのユーザーにのみ読み取りのアクセス許可を与えるには、次のようにします。
- 所有者:rwx =4 + 2 + 1 =7
- グループ:r-x =4 + 0 + 1 =5
- その他:r-x =4 + 0 + 0 =4
上記の方法を使用すると、754
という番号になります。 、これは必要な権限を表します。
setuid
を設定するには 、setgid
、およびsticky bit
フラグ、4桁の数字を使用します。
4桁の数字を使用する場合、最初の桁は次の意味になります。
- setuid =4
- setgid =2
- sticky =1
- 変更なし=0
次の3桁は、3桁の数字を使用する場合と同じ意味です。
最初の桁が0の場合は省略でき、モードは3桁で表すことができます。数値モード0755
755
と同じです 。
数値モードを計算するには、別の方法(バイナリ方法)を使用することもできますが、少し複雑です。ほとんどのユーザーにとって、4、2、および1を使用して数値モードを計算する方法を知っていれば十分です。
stat
を使用して、数値表記でファイルの権限を確認できます コマンド:
stat -c "%a" file_name
chmod
の使用方法の例を次に示します。 数値モードのコマンド:
-
ファイルの所有者に読み取りと書き込みのアクセス許可を与え、グループメンバーと他のすべてのユーザーにのみ読み取りのアクセス許可を与えます:
chmod 644 dirname
-
ファイルの所有者に読み取り、書き込み、実行の権限を付与し、グループメンバーには読み取りと実行の権限を付与し、他のすべてのユーザーには権限を付与しません。
chmod 750 dirname
-
読み取り、書き込み、実行のアクセス許可と、特定のディレクトリへのスティッキービットを付与します:
chmod 1777 dirname
-
ファイル所有者に読み取り、書き込み、および実行のアクセス許可を再帰的に設定し、特定のディレクトリの他のすべてのユーザーにはアクセス許可を設定しません。
chmod -R 700 dirname
結論#
Linuxでは、ファイルへのアクセスは、ファイルのアクセス許可、属性、および所有権を使用して制限されます。ファイルの権限を変更するには、chmod
を使用します コマンド。