Linux では、ファイルのアクセス許可によって、ファイル所有者とその他すべてのユーザーの特権レベルが決まります。 Web に接続されているファイルのアクセス許可が正しく設定されていることを確認し、侵害されたプロセスが書き込み禁止の場所に書き込めないようにすることが重要です。
ファイル権限とは何ですか?
ファイル権限は、3 つの異なるグループの権限を追跡します。各グループは 3 ビットで表されます。
- r: 「読み取り」権限により、プロセスはそのファイルの内容をメモリに読み取ることができます。
- w: 「書き込み」権限は、ファイルが保存されているディスク上の物理的な場所を上書きするためのアクセス アクセスをプロセスに与えます。
- ×: 「実行」権限はプログラムに対するものであり、そのファイルの実行を許可します。
ターミナルでは、権限が次のように表示されます。
最初の「d」は、ファイルがディレクトリであるかどうかを示します。最初の 3 つのグループはファイル所有者用です。この場合、ファイル所有者は完全な読み取り、書き込み、実行アクセス権を持ちます。次の 3 つのグループは「グループ所有者」で、ファイルが属するグループのアクセス権 (この場合は読み取り専用) を示します。次のグループは他の全員であり、読み取り専用です。
一般に、オープンな「全員」権限を持つファイルはあまり安全ではありません。最後のグループが読み取り専用に設定されているか、ほとんどのファイルに対してアクセス権がないことを確認する必要があります。
内部では、これらはバイナリで保存され、各アクセス許可はビットを表します。例えば、
rw-
は
110
2進数では6、10進数では6です。したがって、許可文字列は次のようになります。
rwxrw-r--
…「764」として保存できます。ファイルのアクセス許可は、このように呼ばれることがよくあります。 「777」はフルアクセス、「700」はプライベート、「644」は読み取り専用を示します。技術的には、各桁に 8 つの可能な値があるため、これは 10 進数ではなく 8 進数として知られています。
ディレクトリの場合、権限には同じ文字が使用されますが、少し異なります。
-
r:
リスト権限。ディレクトリを開くことを許可し、
lsの使用を許可します。 x 属性を設定する必要があります。 - w: 書き込み許可。新しいファイルの作成、ファイルの削除、ファイル名の変更が可能です。ディレクトリ内の既存の書き込み可能なファイルの内容の変更を妨げません。
-
×:
入りやすい。
cdの使用を許可します。これはシステム全体で尊重され、GUI ファイル エクスプローラーでフォルダーを開くことができなくなります。
一部のシステム、特に macOS では、ファイル許可文字列の後に「@」が付いている場合があります。これは、ファイルに拡張属性があることを意味し、
ls -l@
で確認できます。たとえば、
com.apple.quarantine
属性はまだ開かれていない実行可能ファイルに割り当てられているため、Gatekeeper はその実行可能ファイルのダブルクリックをブロックし、右クリックして開くことを強制し、開いていない場合には不必要なプロンプトを表示する可能性があります。本当に開けたいと思っているはずです。
ファイル所有者とグループとは何ですか?
ファイル所有者は単なる特定のユーザーですが、Unix システムのユーザーは Windows の場合と同じように機能しません。 Unix では、
mysql
や
nginx
などの個々のプロセスに対して異なるユーザーを持つことができます。これにより、権限が非常に詳細になる可能性があります。たとえば、
mysql
ユーザーで実行されている MySQL のインスタンスは独自のデータベースにアクセスできますが、
nginx
ユーザーはアクセスできません。
ユーザー グループも同様に機能しますが、同じ権限を持つ複数のユーザーをサポートします。ユーザーはグループに追加したり、グループから削除したりできます。また、ファイルのアクセス許可の設定はオプションです。
ディレクトリのファイル権限を確認する方法
ターミナルで
ls -l
を実行すると、ファイルとディレクトリのアクセス許可を表示できます。ファイルのアクセス許可が右端に表示されます。
特定のファイルまたはディレクトリのファイル権限を表示したい場合は、
ls
出力を
grep
にパイプする必要があります。
ls -la | grep ファイル名
現在のフォルダーと親フォルダーのアクセス許可は として表示されることに注意してください
.
および
..
-a
フラグを使用する場合。ただし、これでも 2 レベルの権限しか表示されません。すべての親フォルダーのアクセス許可を表示するには、
namei
コマンドを使用する必要があります。
名前 -l `pwd`
このコマンドは、すべての Linux ディストリビューションにインストールされるわけではありません。 macOS では、 brew からインストールする必要があります。
誤ったアクセス許可を持つ可能性のあるフォルダー内の個々のファイルを検索するには、
-perm
フラグを指定して
find
コマンドを使用できます。
find ~ -type f -perm 777
これは再帰的に検索するため、ルート ディレクトリで実行している場合は時間がかかる場合があります。
ファイルのアクセス許可と所有権を変更する方法
ファイル権限の変更は、
chmod
コマンドを使用すると簡単です。
chmod 700 ファイル名
完全な権限文字列を指定せずに権限を追加することもできます。これはショートカットですが、時間を節約できます。たとえば、スクリプト ファイルを開けない場合は、次のようにして所有者に実行権限を追加できます。
chmod u+x ファイル名
これにより、現在の所有者 (u、「ユーザー」の意味) に実行 (x) 権限が追加されます。
所有者の変更は、
chown
コマンドと同様に機能します。
chown 所有者:グループ ファイル名
「:group」はオプションです。
chmod
と
chown
両方とも、ディレクトリに対して再帰的に実行して、それらのディレクトリ内のすべてのファイルのアクセス許可を変更できます。これを行うには、大文字の
-R
フラグを使用します。
chmod 700 -R ディレクトリ
find
の
-exec
オプションとして
chmod
を使用することもできます。これにより、システム全体でファイルのアクセス許可を変更できます。たとえば、次のコマンドは、オープン書き込み権限を持つファイルを検索し、読み取り専用に設定します。
find / -type f -perm 777 -print -exec chmod 744 {} ;





