Unix のファイルとディレクトリのパーミッションは、3×3 構造の形式になっています。つまり、3 つのタイプのユーザー (所有者、グループ、およびその他) が使用できる 3 つの許可 (読み取り、書き込み、および実行)。
ls -l コマンドの出力で、2 番目から 10 番目の位置までの 9 文字は、 3 種類のユーザーの権限。
-rw-r--r-- 1 sathiya sathiya 272 Mar 17 08:22 test.txt
上記の例では:
- ユーザー (sathiya) には読み取りと書き込みの権限があります
- グループには読み取り権限があります
- 他のユーザーには読み取り権限があります
3 つのファイル権限:
- 読む :ファイルの内容の読み取りが許可されています。
- 書く :ファイルへの書き込みが許可されています。
- 実行 :ファイルをプログラム/スクリプトとして実行することが許可されています。
3 つのディレクトリ権限:
- 読む :ディレクトリの内容の読み取りが許可されています (そのディレクトリ内のファイルとサブディレクトリの表示)。
- 書く :ディレクトリへの書き込みが許可されています。 (そのディレクトリにファイルとサブディレクトリを作成します)
- 実行 :そのディレクトリに入ることが許可されています。
読み取り、書き込み、および実行権限の数値:
- 4 を読む
- 2 を書いてください
- 1 を実行
権限を組み合わせるには、必要な数を追加します。たとえば、読み取りと書き込みの許可の場合、4+2 =6 です。
chmod コマンドを使用してファイルとディレクトリのアクセス許可を変更する
ファイルまたはディレクトリのアクセス許可を変更するには、8 進数表現またはシンボリック表現を使用できます。
パーミッションの 8 進数表現:
- 最初の番号はユーザーです
- 2 番目の番号はグループ用です
- 3 番目の番号はその他の番号です
たとえば、読み取り、書き込み ( 4+2 =6 ) をユーザーに、読み取り (4) をグループなどに与えます。
$ chmod 644 filename
たとえば、読み取り、実行 ( 4 + 1 =5 ) をユーザーに、読み取り (4 ) をグループに、その他には何も ( 0 ) を与えます。
$ chmod 540 filename
たとえば、読み取り、書き込み ( 4 + 2 =6 ) をユーザーに与え、グループには何も ( 0 ) を与え、他の人には読み取り ( 4 ) を与えます。
$ chmod 604 filename
Umask 022 は、ファイルのデフォルトのパーミッションを担当します
デフォルトの umask 値は 0022 で、新しいファイルまたはディレクトリのデフォルトのパーミッションを決定します。ディレクトリのデフォルトのパーミッションは 0777 で、ファイルのパーミッションは 0666 であり、そこからデフォルトの umask 値 0022 が差し引かれ、新しく作成されたファイルまたはディレクトリのパーミッションが取得されます。
ファイルの最終的な既定のアクセス許可は、次のように計算されます:
- デフォルトのファイル許可:666
- デフォルトの umask :022
- 最終的なデフォルトのファイル許可:644
ディレクトリの最終的な既定のアクセス許可は、次のように計算されます:
- デフォルトのディレクトリ許可:777
- デフォルトの umask:022
- 最終的なデフォルトのディレクトリ許可:755
上記の計算に基づいて、umask 値を必要な適切な値に変更できます。たとえば、ユーザー (所有者) 以外の誰もがファイルまたはディレクトリに対して何もできないようにする場合は、umask に 0077 を指定できます。
$ umask 0077
この後、ファイルまたはディレクトリを作成すると、以下に示すように、ユーザーに対してのみ権限が付与されます:
$ > testfile $ ls -l testfile -rw------- 1 sathiya sathiya 0 Mar 17 08:23 testfile