LinuxまたはUnixシステムのUMASKは、ユーザーマスクと呼ばれるか、ユーザーファイル作成マスクとも呼ばれます。これは、Linuxマシンで新しいファイルまたはフォルダーが作成されるときの基本権限またはデフォルト権限です。
これは、mkdir、touch、tee、およびファイルとディレクトリを作成するその他のコマンドなど、Linuxの複数のコマンドで使用されます。新しいファイルまたはディレクトリが作成されると、すべてのステップに関与します。
ファイルのアクセス許可:
深く掘り下げてumaskを理解する前に、まずファイルのパーミッションを簡単に理解しましょう。
Linuxはそのセキュリティで知られています。 Linuxの各ファイルまたはディレクトリには、特定の権限と所有権のセットがあります。以下のユーザークラスを見てみましょう。
Linuxの各ファイルには、3つ以下のユーザークラスが関連付けられています。
- ユーザー-ファイルを所有するユーザー-デフォルトでは、ファイルを変更しない限り、誰がファイルを作成したかを示します。
- グループ-これは、グループ内のユーザーにファイルへのアクセス許可が割り当てられることを示しています。
- その他-これにより、所有者ではない、または割り当てられたグループに属していない他のユーザーが制限されます。
上記のユーザークラスごとに3種類のファイルアクセスがあります。
- r-読み取り権限-ファイルの内容を読み取る機能
- w-書き込み権限-ファイルの内容を変更する機能
- x-実行権限-ファイルをプログラムとして実行する機能
上記の概念は、ファイルコンテンツの読み取り、ファイルコンテンツの変更、またはプログラムの実行を誰に許可するかを示しています。
表示権限-シンボリックモード:
以下のファイル所有権を見てみましょう。 ls -lコマンドを入力すると、Linuxマシンで情報を取得できます。
上の画像の最初の文字はファイルタイプを示しています。 Linuxには、次のようにさまざまな種類のファイルが存在する可能性があります。
- | .txt、.json、.sh、.py、.rbなどのさまざまな拡張子を持つ単純な通常のファイルを示します |
d | ディレクトリ/フォルダを示します |
l | シンボリックリンクまたはシンボリックリンクまたはソフトリンクを示します |
c | キャラクターデバイスファイルを示します |
b | ブロックデバイスファイルを示します |
次の9つのシンボルは、次のように3つの部分に分けられます。
rwx | ファイルの所有者 コンテンツを読み取り、コンテンツを変更し、プログラムとしてファイルを実行できます |
r-x | グループのメンバー 「ユーザー」はコンテンツを読み取ってファイルをプログラムとして実行できますが、ファイルのコンテンツを変更することはできません |
r-x | 所有者ではない人もグループのメンバーでもありません。つまり、その他 、ファイルの内容を読み取ってプログラムとして実行することもできますが、ファイルの内容を変更することはできません |
表示権限-数値モード:
数値モードと呼ばれる番号を使用して権限を表す追加の方法があります。
以下の数値ファイル許可チャートを見てみましょう。
0 | --- | 許可なし |
1 | -x | 実行権限のみ |
2 | -w- | 書き込み許可のみ |
3 | -wx | 書き込みおよび実行権限 |
4 | r- | 読み取り許可のみ |
5 | r-x | 読み取りおよび実行権限 |
6 | rw- | 読み取りおよび書き込み権限 |
7 | rwx | 読み取り、書き込み、実行の権限 |
この数値許可チャートを参照して、上の画像に記載されているのと同じディレクトリに適用すると、許可は次のようになります。
rwx | 4 + 2 + 1 | 7 |
r-x | 4 + 0 + 1 | 5 |
r-x | 4 + 0 + 1 | 5 |
したがって、testdirディレクトリの数値権限は755です。
以下のコマンドを実行して、新しいファイルと新しいディレクトリを作成しましょう。
$ touch testfile
$ mkdir testdir
ls -lコマンドを実行して、testfileとtestdirの権限を確認しましょう。
$ ls -l </ P>
Output:
drwxr-xr-x 2 niteshb users 4096 Mar 21 22:43 testdir
-rw-r--r-- 1 niteshb users 0 Mar 21 22:43 testfile
許可に気づきましたか?違いますよね?これは、Linuxマシンで設定されているデフォルトのumask値が原因です。
デフォルトでは、Linuxマシンでは、ファイルのデフォルトの作成権限は666で、所有者、グループ、その他に読み取りと書き込みの権限を与え、ディレクトリの777は、所有者、グループ、およびその他。
ご存知のとおり、ディレクトリは実行可能ではありません。では、なぜディレクトリに実行権限が必要なのですか?さて、ディレクトリへの実行権限は、ディレクトリの下のコンテンツへのアクセスを許可することです。 chmodコマンドを使用してディレクトリのパーミッションを666に変更し、cdコマンドでディレクトリに移動しようとすると、パーミッション拒否エラーが発生します。
ほとんどのLinuxディストリビューションでは、デフォルトのシステム全体の値はpam_umask.soまたは/ etc/profileファイルに設定されています。ユーザーのホームディレクトリにある〜/ .bashrcファイルに値を追加することで、ユーザーに固有のumask値を作成できます。
umask値を確認するには、umaskコマンドを実行します。
$umask
出力:
0022
今のところ、上記の4つの数字の最初の0は無視できます。これは、Linuxの高度な権限の一部です。これにより、書き込み権限がある場合でもファイルの変更を防ぐことができます。または、rootユーザーであってもファイルの削除を防ぐことができます。このブログでは、他の3つの数字にのみ焦点を当てます。
現在のセッションのumask値を変更するには、以下のコマンドを実行してから目的の値を実行します。
$umask 0044
ファイルとディレクトリがアクセス許可を取得する方法:
umaskに関連付けられている値は、ファイルおよびディレクトリに対して取得する権限ではありません。
非常に簡単な計算があります。前述のように、ファイルのデフォルト値は666で、ディレクトリのデフォルト値は777です。新しいファイルまたはディレクトリのアクセス許可ビットを計算するには、デフォルト値からumask値を減算します。
たとえば、umaskが原因で新しいファイルまたはディレクトリのアクセス許可がどのように影響するかを計算してみましょう。
- ファイル:666-022 =644。許可に従って、所有者はファイルを読み取って実行できます。グループなどがファイルを読み取ることができます。
- ディレクトリ:777-022 =755。これは、所有者がすべての読み取り、書き込み権限を持ち、ディレクトリにcdすることを意味します。グループなどは、ディレクトリの内容を読み取って一覧表示し、ディレクトリにcdできます。
以下のコマンドを実行して、umask値を数値形式で表示することもできます。
$umask
出力:
u=rwx,g=rx,o=rx
数値表記とは異なり、記号表記の値には、新しく作成されたファイルとディレクトリに設定される許可ビットが含まれています。
マスク値の設定:
ファイル作成マスクは、8進表記または記号表記を使用して設定できます。変更を永続的にするには、すべてのユーザーに影響する/ etc / profileファイルなどのグローバル構成ファイル、または〜/ .profile、〜/ .bashrc、〜/.zshrcなどのユーザーのシェル構成ファイルに新しいumask値を設定します。ユーザーにのみ影響します。ユーザーファイルはグローバルファイルよりも優先されます。
umask
に変更を加える前 値は、新しい値が潜在的なセキュリティリスクをもたらさないことを確認します。 022
よりも制限の少ない値 細心の注意を払って使用する必要があります。例:umask 000
これは、新しく作成されたすべてのファイルに対して、誰でも読み取り、書き込み、および実行の権限を持つことを意味します。
他の人がcd
できないように、新しく作成されたファイルとディレクトリに対してより制限的な権限を設定したいとします。 ディレクトリに移動し、ファイルを読み取ります。必要な権限は750
です ディレクトリおよび640
ファイル用。
umask
を計算するには 値は、デフォルトの権限から必要な権限を差し引くだけです:
Umask値:777-750 = 027
目的のumask
数値表記で表される値は027
です。 。
システム全体で新しい値を永続的に設定するには、/etc/profile
を開きます テキストエディタでファイルを作成し、ファイルの先頭に次の行を変更または追加します。
umask 0027
変更を有効にするには、次のソースコマンドを実行するか、ログアウトしてログインします。
$source /etc/profile
新しい設定を確認するために、以下のコマンドを使用して1つの新しいファイルとディレクトリを作成します。
$mkdir newtestdir
$touch newtestfile
lsコマンドを使用して権限を確認すると、新しいファイルに640
があることがわかります。 および新しいディレクトリ750
必要に応じて権限:
drwxr-xr-- 2 niteshb users 4096 Mar 21 22:43 newtestdir
-rw-r----- 1 niteshb users 0 Mar 21 22:43 newtestfile
ファイル作成マスクを設定する別の方法は、記号表記を使用することです。例:umask u=rwx,g=rx,o=
umask 027
と同じです 。
結論:
このガイドでは、Linuxの権限とumask
の使用方法について説明しました。 新しく作成されたファイルまたはディレクトリのアクセス許可ビットを設定するコマンド。
詳細については、端末で以下のコマンドを入力してください。
$man umask