この章では、Unixのファイルアクセス権とアクセスモードについて詳しく説明します。ファイルの所有権は、ファイルを格納するための安全な方法を提供するUnixの重要なコンポーネントです。Unixのすべてのファイルには、次の属性があります。
- 所有者権限 – 所有者の権限によって、ファイルの所有者がファイルに対して実行できるアクションが決まります。
- グループ権限 – グループの権限によって、ファイルが属するグループのメンバーであるユーザーがファイルに対して実行できるアクションが決まります。
- 全てのユーザーのアクセス許可 – すべてのユーザーがファイルに対して実行できる操作を示します。
Contents
許可インジケータ
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
ここで、第1列は、異なるアクセスモード、すなわちファイルまたはディレクトリに関連する許可を表す。
パーミッションは3つのグループに分割され、グループ内の各位置は特定のパーミッションを示します。read(r)、write(w)、execute(x)
- 最初の3文字(2-4)は、ファイルの所有者のアクセス許可を表します。たとえば、-rwxr-xr–は、所有者が読み取り権(r)、書き込み権(w)、および実行権(x)を持っていることを示します。
- 2番目の3文字グループ(5-7)は、ファイルが属するグループのアクセス許可で構成されます。たとえば、-rwxr-xr–は、グループに読み取り(r)および実行(x)権限があるが、書き込み権限はないことを表します。
- 3文字(8-10)の最後のグループは、他のすべてのユーザーのアクセス許可を表します。たとえば、-rwxr-xr–は、読み取り専用(r)許可があることを表します。
ファイルアクセスモード
ファイルのパーミッションは、Unixシステムのセキュリティの第一線である。Unixパーミッションの基本的なビルディングブロックは、以下に説明されている読み取り、書き込み、および実行のパーミッションです。
読む
ファイルの内容を読み込み、つまり表示する機能を許可します。
書きます
ファイルの内容を変更または削除する機能を許可します。
実行する
実行権限を持つユーザーは、ファイルをプログラムとして実行できます。
ディレクトリアクセスモード
ディレクトリアクセスモードは、他のファイルと同じ方法でリストされ、編成されます。言及する必要があるいくつかの違いがあります –
読む
ディレクトリへのアクセスは、ユーザがコンテンツを読むことができることを意味する。ユーザーはディレクトリ内のファイル名を見ることができます。
書き
アクセスとは、ユーザーがディレクトリにファイルを追加または削除できることを意味します。
実行
ディレクトリを実行することは意味をなさないので、これをトラバースのパーミッションと見なしてください。
lsコマンドまたはcdコマンドを実行するには、ユーザーがbinディレクトリへの実行アクセス権を持っている必要があります。
権限の変更
ファイルまたはディレクトリのアクセス権を変更するには、chmod(change mode)コマンドを使用します。シンボリックモードと絶対モードの2つの方法があります。
シンボリックモードでのchmodの使用
初心者がファイルまたはディレクトリのアクセス許可を変更する最も簡単な方法は、シンボリックモードを使用することです。シンボリックアクセス許可を使用すると、次の表の演算子を使用して、必要なアクセス許可セットを追加、削除、または指定できます。
S.No. | 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つ目の方法は、番号を使用してファイルの各アクセス権セットを指定する方法です。
次の表に示すように、各アクセス許可には値が割り当てられ、各アクセス許可の合計でそのセットの番号が提供されます。
数 | オクタル許可表現 | Ref |
---|---|---|
0 | 全く許可しません | — |
1 | 実行権限 | – × |
2 | 書き込み許可 | -w- |
3 | 実行権限と書き込み権限:1(実行)+ 2(書き込み)= 3 | -wx |
4 | 読み取り権限 | r– |
5 | 読み取りおよび実行許可:4(読み取り)+ 1(実行)= 5 | rx |
6 | 読み取りと書き込みの許可:4(読み取り)+ 2(書き込み)= 6 | rw- |
7 | すべての権限:4(読み取り)+ 2(書き込み)+ 1(実行)= 7 | rwx |
次に、testfileを使用した例を示します。テストファイルで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コマンドは“change group”の略で、ファイルのグループを変更するために使用されます。
所有権の変更
chownコマンドコマンドは、ファイルの所有権を変更します。基本的な構文は次のとおりです。
$ chown user filelist
ユーザーの値は、システム上のユーザーの名前か、システム上のユーザーのユーザーID(uid)のいずれかです。
次の例は、概念を理解するのに役立ちます –
$ chown amrood testfile $
指定されたファイルの所有者をユーザーamroodに変更します。
注 – スーパーユーザーのrootは、ファイルの所有権を変更する制限のない機能を持っていますが、通常のユーザーは所有しているファイルの所有権のみを変更できます。
グループ所有権の変更
chgrpコマンドのコマンドは、ファイルのグループ所有権を変更します。基本的な構文は次のとおりです。
$ chgrp group filelist
groupの値には、システム上のグループ名またはシステム上のグループのグループID(GID)を指定できます。
次の例は、概念を理解するのに役立ちます。
$ chgrp special testfile $
与えられたファイルのグループを特別なグループに変更します。
SUIDとSGIDファイルのパーミッション
コマンドが実行されると、そのタスクを達成するために特別な権限で実行する必要があります。
たとえば、passwdコマンドでパスワードを変更すると、新しいパスワードは/ etc / shadowファイルに保存されます。
通常のユーザーの場合、セキュリティ上の理由からこのファイルに対する読み取りまたは書き込みアクセス権はありませんが、パスワードを変更するときは、このファイルへの書き込み権限が必要です。つまり、passwdプログラムは、/ etc / shadowファイルに書き込むことができるように、追加のアクセス権を与える必要があります。
追加のパーミッションは、Set User ID(SUID)とSet Group ID(SGID)ビットと呼ばれるメカニズムを介してプログラムに与えられます。
SUIDビットが有効になっているプログラムを実行すると、そのプログラムの所有者のアクセス許可が継承されます。SUIDビットが設定されていないプログラムは、プログラムを起動したユーザーの権限で実行されます。
これはSGIDの場合も同様です。通常、グループ権限でプログラムが実行されますが、このプログラムのグループはプログラムのグループ所有者に変更されます。
SUIDとSGIDのビットは、パーミッションが利用可能な場合、文字“s”として表示されます。SUID 「S」ビットが所有者の許可ビットに配置する実行通常存在する許可を。
たとえば、コマンド –
$ ls -l /usr/bin/passwd -r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd* $
SUIDビットが設定され、コマンドがルートによって所有されていることを示します。小文字sではなく実行位置の大文字のSは、実行ビットが設定されていないことを示します。
スティッキービットがディレクトリで有効になっている場合は、次のいずれかのユーザーのみがファイルを削除できます。
- スティッキーディレクトリの所有者
- 削除されるファイルの所有者
- スーパーユーザーroot