11.3. umask の管理

umask ユーティリティーを使用して、umask の現在の値またはデフォルト値を表示、設定、または変更できます。

11.3.1. umask の現在の値の表示

umask ユーティリティーを使用して、umask の現在の値をシンボリックモードまたは 8 進数モードで表示できます。

手順

  • umask の現在の値をシンボリックモードで表示するには、以下のコマンドを使用します。

    $ umask -S
  • umask の現在の値を 8 進法で表示するには、以下のコマンドを使用します。

    $ umask
    注記

    umask を 8 進法で表示するには、4 桁の数字 (0002 または 0022) で表示される場合があります。umask の最初の数字は、特殊ビット (スティッキービット、SGID ビット、または SUID ビット) を表します。最初の数字を 0 に設定すると、特別なビットは設定されません。

11.3.2. デフォルトの bash umask の表示

bashkshzshtcsh などの多くのシェルを使用できます。これらのシェルはログインまたは nologin シェルとして動作します。ネイティブまたは GUI 端末を開いて、ログインシェルを呼び出すことができます。

ログインシェルまたは nologin シェルのどちらでコマンドを実行しているかを確認するには、echo $0 コマンドを使用します。

例11.8 ログインまたは nologin bash シェルで作業しているかどうかの確認

  • echo $0 コマンドの出力が bash を返す場合、nologin シェルでコマンドを実行します。

    $ echo $0
    bash

    nologin シェルのデフォルトの umask は、/etc/bashrc 設定ファイルで設定します。

  • echo $0 コマンドの出力が -bash を返す場合は、ログインシェルでコマンドを実行します。

    # echo $0
    -bash

    ログインシェルのデフォルトの umask/etc/login.defs 設定ファイルで設定します。

手順

  • nologin シェルのデフォルトの bash umask を表示するには、以下のコマンドを使用します。

    $ grep umask /etc/bashrc

    返される出力は以下のとおりです。

    # By default, we want umask to get set. This sets it for non-login shell.
           umask 002
           umask 022
  • ログインシェルのデフォルトの bash umask を表示するには、以下のコマンドを使用します。

    $ grep "UMASK" /etc/login.defs

    返される出力は以下のとおりです。

    # UMASK is also used by useradd(8) and newusers(8) to set the mode for new
    UMASK        022
    # If HOME_MODE is not set, the value of UMASK is used to create the mode.

11.3.3. シンボリック値を使用した umask の設定

シンボリック値 (組み合わせ文字および記号) を指定して umask ユーティリティーを使用し、現在のシェルセッションの umask を設定できます。

以下の パーミッション を割り当てることができます。

  • 読み取り (r)
  • 書き込み (w)
  • 実行 (x)

パーミッションは、以下の レベルの所有権 に割り当てることができます。

  • ユーザー所有者 (u)
  • グループ所有者 (g)
  • その他 (o)
  • すべて (a)

パーミッションを追加または削除するには、以下の 記号 を使用できます。

  • +: 既存のパーミッションの上にパーミッションを追加します。
  • -: 既存のパーミッションからパーミッションを削除します。
  • =: 既存のパーミッションを削除し、新しいパーミッションを明示的に定義します。

    注記

    パーミッションを等号 (=) の後ろに指定していない場合には自動的に無視されます。

手順

  • 現在のシェルセッションの umask を設定するには、以下のコマンドを使用します。

    $ umask -S <level><operation><permission>

    <level> は、umask を設定する 所有権のレベル に置き換えます。<operation> は、署名 の 1 つに置き換えます。<permission> は、割り当てる パーミッション に置き換えます。たとえば、umasku=rwx,g=rwx,o=rwx に設定するには umask -S a=rwx を使用します。

    詳細は、ユーザーファイル作成モードを参照してください。

    注記

    umask は、現在のシェルセッション限定で有効になります。

11.3.4. 8 進数値を使用した umask の設定

8 進数値 (数字) を指定して umask ユーティリティーを使用し、現在のシェルセッションの umask を設定できます。

手順

  • 現在のシェルセッションの umask を設定するには、以下のコマンドを使用します。

    $ umask octal_value

    octal_value は 8 進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。

    注記

    umask は、現在のシェルセッション限定で有効になります。

11.3.5. nologin シェルのデフォルト umask の変更

/etc/bashrc ファイルを変更して、標準ユーザーのデフォルトの bash umask を変更できます。

前提条件

  • root アクセス

手順

  1. root として、エディターで /etc/bashrc ファイルを開きます。
  2. 以下のセクションを変更して、新しいデフォルトの bash umask を設定します。

        if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
           umask 002
        else
           umask 022
        fi

    umask (002) のデフォルト値を別の進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。

  3. 変更を保存し、エディターを終了します。

11.3.6. ログインシェルのデフォルト umask の変更

/etc/login.defs ファイルを変更して、root ユーザーのデフォルトの bash umask を変更できます。

前提条件

  • root アクセス

手順

  1. root として、エディターで /etc/login.defs ファイルを開きます。
  2. 以下のセクションを変更して、新しいデフォルトの bash umask を設定します。

    # Default initial "umask" value used by login(1) on non-PAM enabled systems.
    # Default "umask" value for pam_umask(8) on PAM enabled systems.
    # UMASK is also used by useradd(8) and newusers(8) to set the mode for new
    # home directories if HOME_MODE is not set.
    # 022 is the default value, but 027, or even 077, could be considered
    # for increased privacy. There is no One True Answer here: each sysadmin
    # must make up their mind.
    
    UMASK           022

    umask (022) のデフォルト値を別の 8 進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。

  3. 変更を保存し、エディターを終了します。

11.3.7. 特定ユーザーのデフォルトの umask の変更

特定ユーザーのデフォルトの umask を変更するには、そのユーザーの .bashrc を変更します。

手順

  • umask の 8 進数値を指定する行を、特定ユーザーの .bashrc ファイルに追加します。

    $ echo 'umask octal_value' >> /home/username/.bashrc

    octal_value は 8 進数値に、username はユーザー名に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。

11.3.8. 新しく作成されたホームディレクトリーのデフォルト権限設定

新しく作成されたユーザーのホームディレクトリーのパーミッションモードは、/etc/login.defs ファイルを修正して変更できます。

手順

  1. root として、エディターで /etc/login.defs ファイルを開きます。
  2. 以下のセクションを変更して、HOME_MODE のデフォルトを新規設定します。

    # HOME_MODE is used by useradd(8) and newusers(8) to set the mode for new
    # home directories.
    # If HOME_MODE is not set, the value of UMASK is used to create the mode.
    HOME_MODE       0700

    デフォルトの 8 進数値 (0700) を別の 8 進数値に置き換えます。選択したモードは、ホームディレクトリーのパーミッションの作成に使用されます。

  3. HOME_MODE が設定されている場合は、変更を保存してエディターを終了します。
  4. HOME_MODE が設定されていない場合は、UMASK を変更して、新しく作成されたホームディレクトリーにモードを設定します。

    # Default initial "umask" value used by login(1) on non-PAM enabled systems.
    # Default "umask" value for pam_umask(8) on PAM enabled systems.
    # UMASK is also used by useradd(8) and newusers(8) to set the mode for new
    # home directories if HOME_MODE is not set.
    # 022 is the default value, but 027, or even 077, could be considered
    # for increased privacy. There is no One True Answer here: each sysadmin
    # must make up their mind.
    
    UMASK           022

    デフォルトの 8 進数値 (022) を別の 8 進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。

  5. 変更を保存し、エディターを終了します。