この記事では、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)のパーミッションを持っていることを意味します。
- 2番目の3文字のグループ(5-7)には、ファイルが属するグループのアクセス許可が含まれています。例えば、-rwxr-xr–は、グループに読み取り(r)および実行(x)のパーミッションがあり、書き込みパーミッションがないことを意味します。
- 最後の3文字のセット(8-10)は、他のすべての人のパーミッションを表します。 例えば、-rwxr-xr–は、読み取り専用(r)のパーミッションがあることを示します。
ファイルアクセスモード
ファイルのパーミッションは、Unixシステムセキュリティの最初の防衛線です。 Unixパーミッションの基本的な構成要素は、読み取り、書き込み、および実行のパーミッションです。次には説明します。
読み取り
読み取り機能(つまり、ファイルの内容を表示する機能)を付与します。
書き込み
ファイルの内容を変更または削除する機能を付与します。
実行
実行権を持つユーザーは、ファイルをプログラムとして実行できます。
ディレクトリアクセスモード
ディレクトリアクセスモードは、その他のファイルと同じ方法で一覧表示および整理されます。次には異なるところを説明します。
読み取り
ディレクトリへのアクセスは、ユーザーがディレクトリを読むことができることを意味します。 ユーザーは、ディレクトリ内のファイル名を表示できます。
書き込み
アクセスとは、ユーザーがディレクトリ内のファイルを追加または削除できることを意味します。
実行
実行ディレクトリは実際に意味がないため、トラバーとしてください。
ls
またはcd
コマンドを実行するには、ユーザーはbinディレクトリへの実行アクセス許可を持っている必要があります。
権限の変更
ファイルまたはディレクトリの権限を変更するには、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
以下のはで組み合わせる方法です-
$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 | 実行権限 | –x |
2 | 書き込み許可 | -w- |
3 | 実行および書き込み権限:1(実行)+ 2(書き込み)= 3 | -wx |
4 | 読み取り許可 | r– |
5 | 読み取りおよび実行権限:4(読み取り)+ 1(実行)= 5 | r-x |
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でアカウントを作成すると、各ユーザーに所有者IDとグループIDが割り当てられます。 上記のすべての権限も、所有者とグループに基づいて割り当てられます。
所有者とファイルグループを変更するために使用できる2つのコマンドがあります-
- chown – chownコマンドは「changeowner」の略語で、ファイルの所有者を変更するために使用されます。
- chgrp – chgrpコマンドは「changegroup」の略語で、ファイルグループを変更するために使用されます。
所有権を変更する
CHOWN
コマンドは、ファイルの所有権を変更します。 基本的な構文は次のとおりです-
$ chown user filelist
ユーザーの値は、システム上のユーザー名またはシステムのユーザーID(uid)にすることができます。
以下の実例は、概念を理解するのに役立ちます-
$ chown ceodata testfile
$
指定されたファイルの所有者をユーザーceodata
に変更します。
ヒント–スーパーユーザーrootには、任意のファイルの所有権を変更する無制限の機能がありますが、通常のユーザーは、自分が所有するファイルの所有権のみを変更できます。
グループの所有権を変更する
chgrp
コマンドは、ファイルのグループ所有権を変更するように命令します。 基本的な構文は次のとおりです-
$ chgrp group filelist
groupの値は、システム上のグループの名前またはシステム上のグループのグループID(GID)にすることができます。
以下の実例は、概念を理解するのに役立ちます-
$ chgrp special testfile
$
指定されたファイルのグループを特別なグループに変更します。
SUIDおよびSGIDファイルのアクセス許可
通常、コマンドを実行する場合、そのタスクを完了するには、コマンドを特別な特権で実行する必要があります。
例えば、passwd
コマンドを使用してパスワードを変更する場合、新しいパスワードはファイル/ etc / shadow
に保存されます。
一般的なユーザーとして、セキュリティのため、このファイルの読み取りまたは書き込みは行いませんでしたが、パスワードを変更すると、このファイルへの書き込み権限が必要です。 つまり、passwdプログラムは、ファイル/ etc / shadowに書き込むことができるように、追加のアクセス許可を提供する必要があります。
「ユーザーIDの設定」(SUID)および「グループ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位置1を表示し、コマンドはルートに属します。 小文字のs
の代わりに実行位置にある大文字のS
は、実行ビットが設定されていないことを意味します。
ディレクトリでstickyビットが有効になっている場合、次のユーザーしかファイルを削除できません-
- スティッキーディレクトリの所有者
- 削除されたファイルの所有者
- スーパーユーザー、ルート(root)
任意のディレクトリのSUIDビットとSGIDビットを設定するには、次のコマンドを使用します-
$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname
$
コメントを残す