Linuxにおけるumaskコマンドの使用原理と計算方法の詳しい解説

Linuxにおけるumaskコマンドの使用原理と計算方法の詳しい解説

umask umaskの使用法

umask は、新しく作成されたファイルとディレクトリのデフォルトの権限を設定します。

ルートによって作成されたディレクトリは755で、ファイルは644であることがわかります。

[root@zaishu zaishu]# タッチテスト.txt
[root@zaishu zaishu]# mkdir テスト

[root@zaishu zaishu]# ls -l
合計 0
drwxr-xr-x 2 ルート ルート 6 11月 25 16:29 テスト  
-rw-r--r-- 1 ルート ルート 0 11月25日 16:28 test.txt

通常ユーザー

一般ユーザーが作成したディレクトリは775個、ファイルは664個あることがわかります。

[mysql@zaishu ~]$ touch test.txt
[mysql@zaishu ~]$ mkdir テスト
[mysql@zaishu ~]$ ls -l
合計 0
drwxrwxr-x 2 mysql mysql 6 11月25日 16:30 テスト
-rw-rw-r-- 1 mysql mysql 0 11月25日 16:30 test.txt

これらのデフォルトの権限値は、umask 設定を使用して計算されます。

原理

Linux は、umask のデフォルト権限を使用して、新しく作成されたすべてのファイルとディレクトリに初期権限を割り当てます。では、umask のデフォルト権限の値をどのように知るのでしょうか? umask コマンドを使用するだけです:

1. umask値

[root@zaishu ~]# umask
0022

[mysql@zaishu ~]$ umask
0002

#ルートユーザーのデフォルト値は0022、一般ユーザーのデフォルト値は0002です

umask のデフォルトの権限は、実際には 4 つの 8 進数で構成されています。最初の数字は、ファイルの特別な権限 (SetUID、SetGID、Sticky BIT) を表し、最初は無視されます。最後の3桁「022」は----w-w-に対応します。

2. ファイルディレクトリの最大権限

Linux システムでは、ファイルとディレクトリの最大のデフォルト権限は異なります。

ファイルの場合、最大のデフォルト権限は 666、つまり rw-rw-rw- です。 x は最大のファイル権限です。新しいファイルが作成されるときには付与されず、ユーザーが手動でのみ付与できます。

ディレクトリの場合、最大のデフォルト権限は 777、つまり rwxrwxrwx です。

3. 従来の計算

ファイルとディレクトリの初期権限は次のように計算されます。

ファイル(またはディレクトリ)の初期権限 = ファイル(またはディレクトリ)の最大デフォルト権限 - umask 権限

[mysql@zaishu ~]$ umask
0002
[mysql@zaishu ~]$ mkdir テスト
[mysql@zaishu ~]$ ll -d テスト
drwxrwxr-x 2 mysql mysql 6 Nov 26 10:50 test // ディレクトリのデフォルトの権限は最大 777 です。777-002 = 775

[mysql@zaishu ~]$ h.txt をタッチする
[mysql@zaishu ~]$ ll h.txt 
-rw-rw-r-- 1 mysql mysql 0 Nov 26 10:52 h.txt // 最大ファイル権限 666、666-002 (一般ユーザー) 666-002 = 664
[root@zaishu ~]# h2をタッチ
[root@zaishu ~]# ls -l h2 
-rw-r--r-- 1 root root 0 Nov 26 10:53 h2 // 最大ファイル権限 666, 666-002 (root) 666-022 = 644

4. 厳密な計算

ファイルまたはディレクトリの初期権限を計算する場合、最大のデフォルト権限と減算用の umask 権限の数値形式を直接使用するのは厳密ではありません。たとえば、umask のデフォルトのパーミッション値が 033 の場合、ファイルの初期パーミッションは数値形式で計算され、666-033=633 になりますが、アルファベット形式で計算すると、(rw-rw-rw-) - (----wx-wx) = (rw-r–r--) となり、数値形式では 644 になります。

ここでの減算は実際には「マスキング」を意味します。つまり、umask 権限に共通する最大デフォルト権限の部分は減算操作によってマスクされ、残りの「最大デフォルト権限」がファイルまたはディレクトリに最終的に付与される初期権限になります。

umask値を変更する

1. 一時的な効果(現在のセッション)

umask 権限値は直接変更できます。

[root@localhost ~]# umask 002
[root@localhost ~]# umask
0002
[root@localhost ~]# umask 033
[root@localhost ~]# umask
0033

この方法で変更された umask は一時的なものであり、システムを再起動するか再ログインすると無効になります。

2. 永続的な効果

変更を永続的にするには、対応する環境変数設定ファイル /etc/profile を変更する必要があります。

[root@zaishu~]# vim /etc/profile
...一部省略...
[ $UID -gt 199]&&[ "'id -gn'" = "'id -un'" ]; の場合
    umask 002
    #UIDが199(一般ユーザー)より大きい場合はこのumask値を使用し、それ以外の場合は
    umask 022
    #UIDが199未満(スーパーユーザー)の場合は、このumask値を使用します

要約する

Linux での umask コマンドの使用原理と計算方法についてはこれで終わりです。Linux での umask コマンドの詳しい説明については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux での umask の使用に関する詳細な説明
  • 新しい Linux ファイル権限設定における umask の詳細な理解

<<:  HTMLリンクを書くときは、HTTPリクエストを減らすためにサブフォルダに必ずスラッシュを追加してください。

>>:  CSS3 タイムラインアニメーション

推薦する

Vue での Vue.prototype の使用に関する詳細な説明

目次1. 基本的な例2. インスタンスプロトタイプのスコープを設定する3. グローバル変数の登録と使...

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

HTML の類似タグと属性の違いの詳細な説明

【1】<i></i>タグと<em></em>タグ同じ...

MySQLデータベースで列を追加、削除、変更する方法

この記事では、例を使用して、MySQL データベースの列を追加、削除、および変更する方法について説明...

CSS3 のテキストとフォントの新しい設定

テキストシャドウテキストシャドウ: 水平オフセット 垂直オフセット ぼかし色互換性: IE10+ &...

MySQL 5.6 から 5.7 にアップグレードする際のマスター スレーブ遅延問題のトラブルシューティング

最近、Zabbix データベースを MySQL 5.6 から 5.7 にアップグレードしたときに、マ...

Vue 関数のアンチシェイクとスロットリングの正しい使用方法

序文1. デバウンス: 高頻度イベントがトリガーされた後、関数は n 秒以内に 1 回だけ実行されま...

MySQLのインデックス選択と最適化の詳細な説明

目次インデックスモデルB+ツリーインデックスの選択インデックスの最適化インデックスの選択性カバーイン...

初心者向け入門チュートリアル⑨:ポータルサイトの構築方法

さらに、ブログ プログラムで構築された記事 Web サイトは常にブログのように見え、カスタマイズでき...

XHTML におけるタイトルタグと段落タグの使用に関する詳細な説明

XHTML 見出しの概要Word 文書を作成するときは、「第 1 章」、「1.2.1」などのタイトル...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...

JS での Reduce Fold Unfold の使用法の詳細な説明

目次折りたたむ(減らす) for...of の使用whileループの使用折り畳み実装に近い展開する配...

レスポンシブ原則をシミュレートするための基礎コードの Vue 実装の例

目次1.Vue.js の機能: 2.Observer.js 関数 (データハイジャック): 3. C...

MySQLでテーブル名を変更する方法と注意すべき点

目次1. テーブル名を変更する方法2. 注記要約: 1. テーブル名を変更する方法RENAME TA...