「Umask」の版間の差分
20行目: | 20行目: | ||
{{Note| |
{{Note| |
||
+ | * Linux ではファイルを作成するときに実行権限を付与することはできません。実際、ディレクトリ作成時のデフォルトのパーミッションは 777 ですが、ファイルの場合は 666 となっています。 |
||
− | * Linux does not allow a file to be created with execution permissions, in fact the default creation permissions are 777 for directories, but only 666 for files. |
||
− | * |
+ | * Linux では、マスクのファイルパーミッションビットだけが使われます。つまり 022 マスクは 0022 と同じです [http://man7.org/linux/man-pages/man2/umask.2.html]。 |
}} |
}} |
||
+ | 例えば、ファイル作成モードマスクが 027 だとします。それぞれの数字は以下を表します: |
||
− | For example, let us assume that the file-creation mode mask is 027. Here the bitwise representation of each digit represents: |
||
+ | * 0 は新しく作成したファイルに設定されない ''user'' パーミッションビットです。 |
||
− | * 0 stands for the ''user'' permission bits not set on a newly created file |
||
+ | * 2 は新しく作成したファイルに設定されない ''group'' パーミッションビットです。 |
||
− | * 2 stands for the ''group'' permission bits not set on a newly created file |
||
+ | * 7 は新しく作成したファイルに設定されない ''other'' パーミッションビットです。 |
||
− | * 7 stands for the ''other'' permission bits not set on a newly created file |
||
+ | 新しく作成したファイルの所有者がユーザー {{ic|User1}} で所有グループがグループ {{ic|Group1}} の場合、下にある表と照合すれば、{{ic|User1}} は新しく作成されたファイルに対して全ての権限を得ることになり (8進数で7)、{{ic|Group1}} グループの他のユーザーは書き込み権限がなく (8進数で5)、その他のユーザーは新しく作成したファイルを扱う権限が全くないことがわかります (8進数で0)。つまり、027 マスクで作成されたファイルのパーミッションは 750 になります。 |
||
− | With the information provided by the table below this means that for a newly created file, for example owned by {{ic|User1}} user and {{ic|Group1}} group, {{ic|User1}} has all the possible permissions (octal value 7) for the newly created file, other users of the {{ic|Group1}} group do not have write permissions (octal value 5), and any other user does not have any permissions (octal value 0) to the newly created file. So with the 027 mask taken for this example, files will be created with 750 permissions. |
||
{| class="wikitable" |
{| class="wikitable" |
||
36行目: | 36行目: | ||
! 8進数 !! バイナリ !! 意味 |
! 8進数 !! バイナリ !! 意味 |
||
|- |
|- |
||
− | | 0 || 000 || |
+ | | 0 || 000 || 権限なし |
|- |
|- |
||
− | | 1 || 001 || |
+ | | 1 || 001 || 実行のみ |
|- |
|- |
||
− | | 2 || 010 || |
+ | | 2 || 010 || 書き込みのみ |
|- |
|- |
||
− | | 3 || 011 || |
+ | | 3 || 011 || 書き込みと実行 |
|- |
|- |
||
− | | 4 || 100 || |
+ | | 4 || 100 || 読み込みのみ |
|- |
|- |
||
− | | 5 || 101 || |
+ | | 5 || 101 || 読み込みと実行 |
|- |
|- |
||
− | | 6 || 110 || |
+ | | 6 || 110 || 読み書き |
|- |
|- |
||
− | | 7 || 111 || |
+ | | 7 || 111 || 読み書き実行 |
|} |
|} |
||
78行目: | 78行目: | ||
* POSIX プログラマーマニュアル: |
* POSIX プログラマーマニュアル: |
||
− | ** [http://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html umask] ( |
+ | ** [http://pubs.opengroup.org/onlinepubs/9699919799/utilities/umask.html umask] ({{ic|umask(1P)}} でも閲覧できます) |
− | ** [http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html#tag_20_17_13 chmod (extended description)] ( |
+ | ** [http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html#tag_20_17_13 chmod (extended description)] ({{ic|chmod(1P)}} でも閲覧できます) |
* [[wikipedia:umask]] |
* [[wikipedia:umask]] |
||
* [https://blogs.gentoo.org/mgorny/2011/10/18/027-umask-a-compromise-between-security-and-simplicity/ 027 umask: a compromise] |
* [https://blogs.gentoo.org/mgorny/2011/10/18/027-umask-a-compromise-between-security-and-simplicity/ 027 umask: a compromise] |
2015年12月7日 (月) 03:06時点における版
関連記事
umask ユーティリティはファイル作成モードマスクを制御するのに使われます。モードマスクは新しく作成されたファイルのファイルパーミッションの初期値を決定します。このユーティリティの挙動は POSIX によって仕様化されており、POSIX のプログラマーマニュアル に解説があります。umask はシェルの実行環境に影響を与えるため、基本的にシェルのビルトインコマンドとして実装されます。
モードマスクの意味
モードマスクには新しく作成されたファイルに設定されるべきではないパーミッションビットが記述されます。つまり新しく作成されたファイルには全く逆のパーミッションビットが設定されます。マスクで何らかのビットが 1
に設定されていれば、新しく作成したファイルの該当パーミッションは無効になります。マスクはパーミッションビットを取り除くフィルターとして機能し、ファイルのデフォルト権限を設定するのに役立ちます。
新しく作成されたファイルに設定されるパーミッションビットの値は論理非含意 (付加) を使って計算され、論理記号で表現することができます:
R: (D & (~M))
つまり、最終的なパーミッション R
はデフォルトのパーミッション D
の論理積とファイル作成時のモードマスク M
の論理否定が合わさった結果になります。
例えば、ファイル作成モードマスクが 027 だとします。それぞれの数字は以下を表します:
- 0 は新しく作成したファイルに設定されない user パーミッションビットです。
- 2 は新しく作成したファイルに設定されない group パーミッションビットです。
- 7 は新しく作成したファイルに設定されない other パーミッションビットです。
新しく作成したファイルの所有者がユーザー User1
で所有グループがグループ Group1
の場合、下にある表と照合すれば、User1
は新しく作成されたファイルに対して全ての権限を得ることになり (8進数で7)、Group1
グループの他のユーザーは書き込み権限がなく (8進数で5)、その他のユーザーは新しく作成したファイルを扱う権限が全くないことがわかります (8進数で0)。つまり、027 マスクで作成されたファイルのパーミッションは 750 になります。
8進数 | バイナリ | 意味 |
---|---|---|
0 | 000 | 権限なし |
1 | 001 | 実行のみ |
2 | 010 | 書き込みのみ |
3 | 011 | 書き込みと実行 |
4 | 100 | 読み込みのみ |
5 | 101 | 読み込みと実行 |
6 | 110 | 読み書き |
7 | 111 | 読み書き実行 |
現在のマスクの値を表示
現在のマスクを表示するには、何も引数を付けずに umask を実行します。デフォルトの出力スタイルは実装によりますが、基本的に8進数で表示されます:
$ umask
0027
POSIX によって標準化されている -S
オプションを使った場合、記号表記でマスクが表示されます。ただし、記号表記の値は8進数の逆の値 (つまり新しく作成したファイルに設定されるパーミッションビット) になるので注意してください:
$ umask -S
u=rwx,g=rx,o=
マスクの値を設定
umask の値は umask コマンドで設定することができます。モードマスクを指定するのに使う文字列は chmod でモードを指定する時と同じ構文ルールに従っています (詳しくは POSIX Programmer's Manual を参照)。
(Arch を含む [2]) ほとんど Linux ディストリビューションはデフォルト値を 022
に設定しています。もしくは /etc/profile
や /etc/bashrc
などのデフォルトシェル設定ファイルで 002
に設定されています。
別の値を設定する必要がある場合、ファイルを直接編集するか (全てのユーザーに影響を与えます)、ユーザーのシェル設定ファイル (例: ~/.bashrc
) から umask を呼び出すようにすることでユーザーの umask だけを変更することができます。ただし、変更は次のログイン時から適用されます。現在のセッション中のみ umask を変更したい場合、umask を実行して設定したい値を入力してください。例えば umask 077
を実行すると新しいファイルに読み書き権限が付与され、新しいフォルダには読み書き実行権限が付与されます。
参照
- POSIX プログラマーマニュアル:
- umask (
umask(1P)
でも閲覧できます) - chmod (extended description) (
chmod(1P)
でも閲覧できます)
- umask (
- wikipedia:umask
- 027 umask: a compromise