Linux での umask の使用に関する詳細な説明

Linux での umask の使用に関する詳細な説明

私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読んだ後、umask についての理解を深め、umask についてよくわからないブロガーの役に立ちたいと思い、このブログを書きました。

1 umaskとは何か

システムにログインしてファイルを作成すると、デフォルトの権限が設定されます。では、この権限はどこから来るのでしょうか?これが umask の機能です。 umask は、ユーザーがファイルまたはディレクトリを作成するためのデフォルトの権限を設定するために使用されます。umask は権限の「補数」を設定しますが、ファイルの権限コードを設定するには chmod を使用することが多いです。 umask 値は通常、/etc/profile、HOME/.bashprofile、または HOME/.profile に設定されます。

2 umask は何に使用されますか?

デフォルトの umask 値は 022 です (umask コマンドを使用して表示できます)。このとき、作成するファイルのデフォルトのパーミッションは 644 (6-0、6-2、6-2)、作成するディレクトリのデフォルトのパーミッションは 755 (7-0、7-2、7-2) です。ls -l で確認できます。これで、デフォルトのパーミッションを制御するという umask の目的がわかったはずです。

[root@bogon テスト]# id
uid=0(ルート) gid=0(ルート) グループ=0(ルート) コンテキスト=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@bogon テスト]# umask
0022
[root@bogon test]# touch a.txt
[root@bogonテスト]# ls -l
合計 0
-rw-r--r--. 1 ルート ルート 0 7月 3 00:40 a.txt
[root@bogon test]# mkdir b
[root@bogonテスト]# ls -l
合計 0
-rw-r--r--. 1 ルート ルート 0 7月 3 00:40 a.txt
drwxr-xr-x. 2 ルート ルート 6 7月 3 00:41 b

上記のように、root の umask は 022 (最初の 0 は特別な権限ビットを表しますが、ここでは考慮されません)、作成されたファイルのデフォルトの権限は 644、作成されたディレクトリのデフォルトの権限は 755 です。

3 基本的な権限の説明

umask の使用方法を説明する前に、ファイルの基本的な権限について説明する必要があります。

Linux のファイル権限

rx
書類ファイルの内容を表示できますファイルを変更できます実行中のプログラムとしてファイルを起動することができます
目次ls を使用してディレクトリ内のファイル名を表示できます。ディレクトリ内のファイルを作成または削除できます (w 権限だけでは作成できません。x 権限が必要です)このディレクトリに入るにはcdを使用し、ディレクトリ内のファイルのメタデータ情報を表示するにはls -lを使用します。

4 umask計算権限

ファイルとディレクトリの場合、最大の権限は実際には 777 です。ただし、実行権限はファイルに対しては非常に恐ろしいものですが、ディレクトリに対しては基本的な権限です。したがって、ディレクトリのデフォルトの最大権限は 777 であり、ファイルのデフォルトの最大権限は 666 です。

ルートユーザーのumask=022の場合、権限777のバイナリコードは(111)(111)(111)、権限022のバイナリコードは(000)(010)(010)です。

  • すべての権限バイナリ1: この権限を表す
  • umask バイナリ 1: は、この権限を削除することを意味します。元々権限を持っていたかどうかに関係なく、最終的にはこの権限はなくなります。
  • umask のバイナリ値は 0 です。これは、対応するビットの権限を気にしないことを意味します。権限がある場合は、権限があります。権限がない場合は、権限がありません。影響はありません。

umask 002 のファイルのデフォルトの権限を計算する方法

所有者所有者オーナー xグループグループグループ x他の他のその他x
すべての権限 777 1 1 1 1 1 1 1 1 1
umaskマスク002 0 0 0 0 1 0 0 1 0
計算値1 1 1 1 0 1 1 0 1

umask 002 のディレクトリのデフォルトの権限を計算する方法

所有者所有者オーナー xグループグループグループ x他の他のその他x
すべての権限 666 1 1 0 1 1 0 1 1 0
umaskマスク002 0 0 0 0 1 0 0 1 0
計算値1 1 0 1 0 0 1 0 0

umask 023 のディレクトリのデフォルトの権限を計算する方法

所有者所有者オーナー xグループグループグループ x他の他のその他x
すべての権限 777 1 1 1 1 1 1 1 1 1
umaskマスク023 0 0 0 0 1 0 0 1 1
計算値1 1 1 1 0 1 1 0 0

umask 023 でファイルのデフォルト権限を計算する方法

所有者所有者オーナー xグループグループグループ x他の他のその他x
すべての権限 666 1 1 0 1 1 0 1 1 0
umaskマスク023 0 0 0 0 1 0 0 1 1
計算値1 1 0 1 0 0 1 0 0

上記はumaskの通常の計算処理ですが、面倒すぎます。素早く計算するために、次の簡単な方法を使用します。

  1. ディレクトリの場合は、最終結果を取得するには 777-umask を使用します。
  2. ファイルの場合は、最初に 666-umask を使用します。
    1. 対応する位置が偶数の場合: 最終的な権限はこの偶数値になります。
    2. 上記の対応する数字が奇数の場合、対応する位置は +1 になります。

上記の方法は計算に非常に便利です。奇数になったときになぜ +1 を加算する必要があるのでしょうか?

ファイルの最大権限は 666 で、すべて偶数です。奇数を取得した場合、umask が奇数であることを意味します。読み取り数は 4、書き込み数は 2 で、すべて偶数であるため、実行権限があることを意味します。

umask=023 を例にとると、他のユーザー権限を計算すると、6-3=3 となり、6 は読み取りと書き込み、3 は書き込みと実行となります。実際には、書き込み権限は読み取り権限から読み取り権限を減算することで取得する必要があり、これは実行権限を減算することと同じです。したがって、結果は 1 増加します。

5 umaskの変更

umask の変更には、一時的と永続的の 2 種類があります。

一時的な変更:

[root@bogon テスト]# umask 023
[root@bogon テスト]# umask
0023
[root@bogon テスト]#

永久的な変更:

次のファイルを編集して、umask=022 を追加できます。

対話型ログイン構成は次のように有効になります。

/etc/profile < /etc/profile.d/*.sh < ~/.bash_profile < ~/.bashrc </etc/bashrc [/etc/bashrc の設定は最も効果的で、以前の設定を上書きできます]

非対話型ログイン構成が有効になります:

~/.bashrc < /etc/bashrc < /etc/profile.d/*.sh

6 よく使われるumask

[root@bogon テスト]# umask 002
[root@bogon テスト]# umask
0002
[root@bogon テスト]# umask 022
[root@bogon テスト]# umask
0022

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 新しい Linux ファイル権限設定における umask の詳細な理解
  • Linuxにおけるumaskコマンドの使用原理と計算方法の詳しい解説

<<:  Vueタブとキャッシュページを切り替えるいくつかの方法

>>:  MySQL 制約の種類と例

推薦する

MySQL が暗黙のデフォルト値を処理する方法

何人かの学生は、マスターとスレーブの間の不一致の問題に遭遇したと述べました。一般的な状況としては、m...

Linux で rpm パッケージを見つけるために CD をマウントする方法

前面に書かれたLinux を使用する際にソフトウェアをインストールする必要がある場合があります。もち...

MySQL 集計関数のネストされた使用操作

目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...

HTML チュートリアル: HTML 水平線分

<br />このタグを使用すると、画面上に水平線を表示して、ページのさまざまな部分を区切...

yum を使用して rpm と関連する依存関係をダウンロードして、docker をオフラインでインストールします。

yum を使用してすべての依存関係を一緒にインストールできますが、–downloadonly –d...

MySQL MHA のセットアップと切り替えに関するいくつかのエラー ログの概要

1: masterha_check_repl レプリカ セット エラー レプリケートが構成ファイルで...

MySQL マスタースレーブレプリケーションと読み取り書き込み分離の詳細な説明

記事マインドマップマスター/スレーブ レプリケーションと読み取り/書き込み分離を使用する理由は何です...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...

JSを使用して画像を効果的に圧縮する方法

目次序文変換関係具体的な実装file2DataUrl(ファイル、コールバック) file2Image...

MySQLデータベースのトランザクション分離レベルの詳細な説明

データベーストランザクション分離レベルデータベース トランザクションには、低から高まで 4 つの分離...

MySQL の主キーがクエリを高速化するために数値を使用するか UUID を使用するかについての簡単な分析

実際の開発では、MySQL の主キーは重複できず、主キーが自動的にインクリメントされることがあります...

純粋な CSS でフォ​​ーム検証を実装するためのサンプル コード

日常業務において、フォームの検証は非常に一般的な設計要件です。ログイン ボックスや登録ボックス、アン...

JavaScript で知らない Object.entries の使い方

目次序文1. 共通オブジェクトを反復処理するには for...of を使用します2. 通常のオブジェ...

Node.js でメモリ効率の高いアプリケーションを作成する方法

目次序文問題: 大きなファイルのコピーNodeJS のストリームとバッファバッファストリーム解決策 ...

Tomcat メモリ オーバーフロー問題の解決経験

少し前に、製品バージョンをテスト用にテスターに​​提出したのですが、テスト結果はまったく予想外のもの...