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でのカスタムパラメータの使用に関する詳細な説明

MySQL 変数には、システム変数とシステム変数が含まれます。今回の学習課題はユーザー定義変数です。...

Docker 構成 Alibaba Cloud イメージアクセラレーション プル実装

今日はdockerを使ってイメージをpullしたのですが、速度が悪くて見れず最後まで待ち続けました。...

Ubuntu 14 に Nginx-RTMP ストリーミング サーバーをインストールするチュートリアル

1. RTMP RTMP ストリーミング プロトコルは、Adobe が開発したリアルタイムのオーディ...

Dockerを使用してSonarQubeをインストールする詳細なチュートリアル

目次1. イメージをプルする1.1 関連するイメージをプルして実行する1.1.1 関連する画像を取得...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...

Vue における v-for のキーの一意性の詳細な説明

目次1. DOM の違い2. 同じレイヤーの同じタイプの要素にキー属性を追加する3. キーはインデッ...

HTML で色を表すには、6 桁の 16 進コード、RGB、またはキーワードを使用します。

HTML で色を表す方法は 3 つありますが、最もよく使われるのは 6 桁の 16 進コード表現です...

JS 継承の詳細

目次序文準備する要約する継承方法プロトタイプ継承プロトタイプチェーン継承コンストラクタの借用(クラス...

MYSQLは、ショッピングカートに追加する際に重複追加を防ぐためのサンプルコードを実装します。

序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...

MySQL データベース シェル import_table データ インポート

目次MySQL Shell import_table データのインポート1. import_tabl...

Docker での MySQL 8.0.20 のインストールと設定のチュートリアル

Dockerは参考までにMySQLバージョン8.0.20をインストールします。具体的な内容は以下のと...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

CentOS8 システムをベースにした Gitlab を構築するために Docker を使用する詳細なチュートリアル

目次1. Dockerをインストールする2. GitLabをインストールする3. GitLabを初期...

CentOS8でyumソースを変更した後にウェアハウスキャッシュの同期に失敗する問題の詳細な説明

問題の原因: 最初は CentOS 8 のデフォルトの yum ソースを正常に使用できますが、次のコ...

Dockerでmysqlのルートパスワードを変更する方法

最初のステップはmysqlコンテナを作成することです docker exec -it コンテナID ...