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 の表示
bash
、ksh
、zsh
、tcsh
などの多くのシェルを使用できます。これらのシェルはログインまたは 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>
は、割り当てる パーミッション に置き換えます。たとえば、umask をu=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
アクセス
手順
-
root
として、エディターで/etc/bashrc
ファイルを開きます。 以下のセクションを変更して、新しいデフォルトの
bash
umask を設定します。if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then umask 002 else umask 022 fi
umask (
002
) のデフォルト値を別の進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。- 変更を保存し、エディターを終了します。
11.3.6. ログインシェルのデフォルト umask の変更
/etc/login.defs
ファイルを変更して、root
ユーザーのデフォルトの bash
umask を変更できます。
前提条件
-
root
アクセス
手順
-
root
として、エディターで/etc/login.defs
ファイルを開きます。 以下のセクションを変更して、新しいデフォルトの
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 進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。- 変更を保存し、エディターを終了します。
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
ファイルを修正して変更できます。
手順
-
root
として、エディターで/etc/login.defs
ファイルを開きます。 以下のセクションを変更して、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 進数値に置き換えます。選択したモードは、ホームディレクトリーのパーミッションの作成に使用されます。- HOME_MODE が設定されている場合は、変更を保存してエディターを終了します。
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 進数値に置き換えます。詳細は、ユーザーファイル作成モードマスクを参照してください。- 変更を保存し、エディターを終了します。