Unix / Linux-ファイルパーミッション/アクセスモード

この章では、Unixのファイルパーミッションとアクセスモードについて詳しく説明します。ファイルの所有権は、ファイルを保存するための安全な方法を提供するUnixの重要なコンポーネントです。Unixのすべてのファイルには、次の属性があります-

  • Owner permissions −所有者の権限によって、ファイルの所有者がファイルに対して実行できるアクションが決まります。

  • Group permissions −グループの権限は、ファイルが属するグループのメンバーであるユーザーがファイルに対して実行できるアクションを決定します。

  • Other (world) permissions −他のユーザーのアクセス許可は、他のすべてのユーザーがファイルに対して実行できるアクションを示します。

許可インジケーター

使用中 ls -l コマンドを実行すると、ファイルのアクセス許可に関連するさまざまな情報が次のように表示されます。

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

ここで、最初の列はさまざまなアクセスモード、つまりファイルまたはディレクトリに関連付けられたアクセス許可を表します。

権限は3つのグループに分けられ、グループ内の各位置は、読み取り(r)、書き込み(w)、実行(x)の順序で特定の権限を示します。

  • 最初の3文字(2〜4)は、ファイルの所有者のアクセス許可を表します。例えば、-rwxr-xr-- 所有者が読み取り(r)、書き込み(w)、および実行(x)の権限を持っていることを表します。

  • 3文字の2番目のグループ(5〜7)は、ファイルが属するグループの権限で構成されます。例えば、-rwxr-xr-- グループには読み取り(r)および実行(x)権限がありますが、書き込み権限はありません。

  • 3文字の最後のグループ(8〜10)は、他のすべてのユーザーのアクセス許可を表します。例えば、-rwxr-xr-- あることを表します read (r) 許可のみ。

ファイルアクセスモード

ファイルのパーミッションは、Unixシステムのセキュリティにおける最初の防衛線です。Unixパーミッションの基本的な構成要素は次のとおりです。readwrite、および execute 以下に説明されている権限-

読んだ

ファイルの内容を読み取る、つまり表示する機能を付与します。

書く

ファイルのコンテンツを変更または削除する機能を付与します。

実行する

実行権限を持つユーザーは、ファイルをプログラムとして実行できます。

ディレクトリアクセスモード

ディレクトリアクセスモードは、他のファイルと同じ方法で一覧表示および整理されます。言及する必要があるいくつかの違いがあります-

読んだ

ディレクトリへのアクセスは、ユーザーがコンテンツを読むことができることを意味します。ユーザーは見ることができますfilenames ディレクトリ内。

書く

アクセスとは、ユーザーがディレクトリからファイルを追加または削除できることを意味します。

実行する

ディレクトリを実行することは実際には意味がないので、これをトラバース許可と考えてください。

ユーザーは持っている必要があります execute アクセス bin を実行するためのディレクトリ ls または cd コマンド。

権限の変更

ファイルまたはディレクトリのアクセス許可を変更するには、 chmod(モード変更)コマンド。chmodを使用するには、シンボリックモードとアブソリュートモードの2つの方法があります。

シンボリックモードでのchmodの使用

初心者がファイルまたはディレクトリのアクセス許可を変更する最も簡単な方法は、シンボリックモードを使用することです。シンボリックパーミッションを使用すると、次の表の演算子を使用して、必要なパーミッションセットを追加、削除、または指定できます。

シニア番号 Chmodオペレーターと説明
1

+

指定された権限をファイルまたはディレクトリに追加します。

2

-

指定された権限をファイルまたはディレクトリから削除します。

3

=

指定された権限を設定します。

これが使用例です testfile。ランニングls -1 テストファイルで、ファイルのパーミッションが次のようになっていることが示されています-

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

次に、各例 chmod 上記の表のコマンドがテストファイルで実行され、その後に ls –l、権限の変更を確認できるように-

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

これらのコマンドを1行で組み合わせる方法は次のとおりです-

$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

絶対権限でchmodを使用する

chmodコマンドを使用してアクセス許可を変更する2番目の方法は、番号を使用してファイルのアクセス許可の各セットを指定することです。

次の表に示すように、各権限には値が割り当てられ、権限の各セットの合計がそのセットの番号を提供します。

8進数の許可表現 参照
0 全く許可しません ---
1 実行許可 - バツ
2 書き込み許可 -w-
3 実行および書き込み権限:1(実行)+ 2(書き込み)= 3 -wx
4 読み取り許可 r--
5 読み取りおよび実行権限:4(読み取り)+ 1(実行)= 5 処方箋
6 読み取りおよび書き込み許可:4(読み取り)+ 2(書き込み)= 6 rw-
7 すべての権限:4(読み取り)+ 2(書き込み)+ 1(実行)= 7 rwx

テストファイルを使用した例を次に示します。ランニングls -1 テストファイルで、ファイルのパーミッションが次のようになっていることが示されています-

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

次に、各例 chmod 上記の表のコマンドがテストファイルで実行され、その後に ls –l、権限の変更を確認できるように-

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

所有者とグループの変更

Unixでアカウントを作成するときに、 owner IDgroup ID各ユーザーに。上記のすべての権限も、所有者とグループに基づいて割り当てられます。

所有者とファイルのグループを変更するために2つのコマンドを使用できます-

  • chownchown コマンドは "change owner" ファイルの所有者を変更するために使用されます。

  • chgrpchgrp コマンドは "change group" ファイルのグループを変更するために使用されます。

所有権の変更

ザ・ chownコマンドはファイルの所有権を変更します。基本的な構文は次のとおりです-

$ chown user filelist

ユーザーの値は、次のいずれかになります。 name of a user システム上または user id (uid) システム上のユーザーの。

次の例は、概念を理解するのに役立ちます-

$ chown amrood testfile
$

指定されたファイルの所有者をユーザーに変更します amrood

NOTE −スーパーユーザーのrootには、任意のファイルの所有権を変更する無制限の機能がありますが、通常のユーザーは、自分が所有するファイルの所有権のみを変更できます。

グループの所有権の変更

ザ・ chgrpコマンドは、ファイルのグループ所有権を変更します。基本的な構文は次のとおりです-

$ chgrp group filelist

groupの値は次のようになります。 name of a group システム上または the group ID (GID) システム上のグループの。

次の例は、概念を理解するのに役立ちます-

$ chgrp special testfile
$

指定されたファイルのグループをに変更します special グループ。

SUIDおよびSGIDファイルのアクセス許可

多くの場合、コマンドを実行するときは、そのタスクを実行するために特別な特権で実行する必要があります。

例として、パスワードを passwd コマンドを実行すると、新しいパスワードがファイルに保存されます /etc/shadow

通常のユーザーとして、あなたは持っていません read または writeセキュリティ上の理由からこのファイルにアクセスできますが、パスワードを変更するときは、このファイルへの書き込み権限が必要です。これは、passwd プログラムは、ファイルに書き込めるように、追加のアクセス許可を与える必要があります /etc/shadow

追加のアクセス許可は、と呼ばれるメカニズムを介してプログラムに付与されます。 Set User ID (SUID) そして Set Group ID (SGID) ビット。

SUIDビットが有効になっているプログラムを実行すると、そのプログラムの所有者のアクセス許可が継承されます。SUIDビットが設定されていないプログラムは、プログラムを開始したユーザーのアクセス許可で実行されます。

これはSGIDにも当てはまります。通常、プログラムはグループ権限で実行されますが、代わりに、このプログラム専用のグループがプログラムのグループ所有者に変更されます。

SUIDビットとSGIDビットが文字として表示されます "s"許可があれば。SUID"s" ビットは、所有者の許可ビットに配置されます execute 通常、許可は存在します。

たとえば、コマンド-

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

SUIDビットが設定されており、コマンドがルートによって所有されていることを示します。大文字S 小文字の代わりに実行位置に s 実行ビットが設定されていないことを示します。

ディレクトリでスティッキービットが有効になっている場合、ファイルを削除できるのは、次のいずれかのユーザーである場合のみです。

  • スティッキーディレクトリの所有者
  • 削除されるファイルの所有者
  • スーパーユーザー、root

任意のディレクトリのSUIDビットとSGIDビットを設定するには、次のコマンドを試してください。

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$