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 制約の種類と例

推薦する

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

MySQLにおける正規表現の一般的な使用法

MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...

JS でオブジェクトが空オブジェクトかどうかを判断する 5 つの方法

1. jsonオブジェクトをjson文字列に変換し、文字列が「{}」であるかどうかを判断します。 v...

CSS3入力ボックスの実装コードはGoogleログインのアニメーション効果に似ています

CSS3を使用して、Googleログインページと同様の入力ボックスをアニメーション化します。効果1 ...

HTML テーブル マークアップ チュートリアル (6): 暗い境界線の色属性 BORDERCOLORDARK

表では、右下の境界線の色を個別に定義したり、セルの左上の境界線の色を定義したりできます。これら 2 ...

Nginx アップロードファイルのサイズを変更する簡単な方法

オリジナルリンク: https://vien.tech/article/138序文私は、マークダウン...

MySQL Community Server 8.0.11 のインストールと設定方法のグラフィックチュートリアル

最近、MySQL を始めとしてデータベースの知識を勉強し始めました。以下では、皆さんの参考になるよう...

N キロメートル以内のデータを検索する MySQL の簡単な例

地球の円周率と半径、検索ポイントの経度と緯度から、検索ポイントと検索データテーブル間の距離はNキロメ...

角度でechartsマップを使用する詳細な説明

目次echartの初期化アプリベースチャートコンポーネントhtml CS app-base-char...

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...

Linuxホスト名変更コマンドの詳しい説明

Linux ホスト名変更コマンド1. ホスト名を一時的に変更するだけの場合は、hostname コマ...

MySQL ダーティ ページ フラッシュとテーブル スペースの縮小の原理の分析

mysql ダーティページWAL メカニズムにより、InnoDB はステートメントを更新するときに、...

Windows 7 64 ビットに最新バージョンの MySQL サーバーをインストールする方法のグラフィック チュートリアル

最近、MySQL データベースを勉強していて、設定ファイルを頻繁に変更したため、MySQL データベ...

mysql bin-log ログファイルを sql ファイルに変換する方法

mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...