Unix-file-permission

提供:Dev Guides
移動先:案内検索

Unix/Linux-ファイル許可/アクセスモード

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

  • 所有者の許可-所有者の許可は、ファイルの所有者がファイルに対して実行できるアクションを決定します。
  • グループ権限-グループの権限は、ファイルが属するグループのメンバーであるユーザーがファイルに対して実行できるアクションを決定します。
  • その他(世界)の許可-他のユーザーの許可は、他のすべてのユーザーがファイルに対して実行できるアクションを示します。

許可インジケーター

*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文字(5〜7)の2番目のグループは、ファイルが属するグループのアクセス許可で構成されます。 たとえば、*-rwxr-xr-*は、グループに読み取り(r)および実行(x)権限があり、書き込み権限はないことを表します。
  • 3文字の最後のグループ(8〜10)は、他のすべてのユーザーのアクセス許可を表します。 たとえば、-rwxr-xr-*は、 read(r)*のみの許可があることを表します。

ファイルアクセスモード

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

Read

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

書きます

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

実行する

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

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

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

Read

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

書きます

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

実行する

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

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

権限を変更する

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

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

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

Sr.No. Chmod operator & Description
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番目の方法は、番号を使用してファイルの許可の各セットを指定することです。

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

Number Octal Permission Representation Ref
0 No permission ---
1 Execute permission --x
2 Write permission -w-
3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx
4 Read permission r--
5 Read and execute permission: 4 (read) PLUS 1 (execute) = 5 r-x
6 Read and write permission: 4 (read) PLUS 2 (write) = 6 rw-
7 All permissions: 4 (read) PLUS 2 (write) PLUS 1 (execute) = 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でアカウントを作成する際、各ユーザーに*所有者ID *および*グループID *を割り当てます。 上記のすべての権限も、所有者とグループに基づいて割り当てられます。

所有者とファイルのグループを変更するための2つのコマンドが利用可能です-

  • chown - chown コマンドは "change owner" を表し、ファイルの所有者を変更するために使用されます。
  • chgrp - chgrp コマンドは "グループの変更" を表し、ファイルのグループを変更するために使用されます。

所有権の変更

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

ユーザーの値は、システム上の*ユーザーの名前*またはシステム上のユーザーの*ユーザーID(uid)*のいずれかです。

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

$ chown amrood testfile
$

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

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

グループ所有権の変更

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

groupの値は、システム上の*グループの名前*またはシステム上の*グループID(GID)*のいずれかです。

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

$ chgrp special testfile
$

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

SUIDおよびSGIDファイルの許可

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

たとえば、 passwd コマンドでパスワードを変更すると、新しいパスワードは /etc/shadow ファイルに保存されます。

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

  • Set User ID(SUID)および Set Group ID(SGID)*ビットと呼ばれるメカニズムを介して、プログラムに追加の許可が与えられます。

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

SGIDの場合も同様です。 通常、プログラムはユーザーのグループ権限で実行されますが、代わりにこのプログラムのグループはプログラムのグループ所有者に変更されます。

許可が使用可能な場合、SUIDおよびSGIDビットは文字「」で表示されます。 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
$