[Linux] umaskコマンドの使い方 – 新規ファイルのパーミッション表示・変更

umaskコマンドは、新規に作成されるファイルやディレクトリのデフォルトのパーミッションを制御するために使用されます。

umaskは「ユーザーマスク」の略で、ファイルやディレクトリのパーミッションから引かれる値を指定します。

例えば、umaskが 022 の場合、ファイルは 644 、ディレクトリは 755 のパーミッションで作成されます。

現在のumask値を確認するには umask と入力し、変更するには「umask 変更値」を使用します。

この記事でわかること
  • umaskの基本的な概念と役割
  • ファイルとディレクトリのデフォルトパーミッション
  • umaskの具体的な設定例
  • セキュリティ強化のための活用法
  • スクリプト内でのumaskの利用方法

目次から探す

umaskとは何か

umask(ユーザー・マスク)は、LinuxやUnix系のオペレーティングシステムにおいて、新規に作成されるファイルやディレクトリのデフォルトのパーミッション(アクセス権)を制御するための設定です。

umaskは、ファイルやディレクトリのパーミッションを設定する際に、どの権限を「取り除く」かを指定します。

具体的には、umaskの値は3桁の8進数で表され、各桁はそれぞれユーザー、グループ、その他のユーザーに対する権限を示します。

例えば、umaskの値が022の場合、ファイルのデフォルトパーミッションは644(rw-r–r–)となり、グループとその他のユーザーには書き込み権限が与えられません。

umaskを適切に設定することで、セキュリティを強化し、不要なアクセスを防ぐことができます。

これにより、システムの安全性を高めることが可能です。

umaskコマンドの使い方

現在のumask値を確認する

現在のumask値を確認するには、umaskコマンドを単独で実行します。

これにより、現在のumask設定が表示されます。

以下はそのコマンドです。

umask
0022

umask値を変更する

umask値を変更するには、umaskコマンドに新しい値を指定して実行します。

例えば、umaskを022に設定する場合は次のようにします。

umask 022

このコマンドを実行すると、以降に作成されるファイルやディレクトリのデフォルトパーミッションが変更されます。

umaskの一時的な変更と永続的な変更

umaskの変更は一時的に行うことも、永続的に設定することも可能です。

  • 一時的な変更: シェルセッション中のみ有効で、シェルを終了すると元に戻ります。
  • 永続的な変更: ユーザーのホームディレクトリにあるシェルの設定ファイル(例: ~/.bashrc~/.bash_profile)にumaskコマンドを追加することで、ログイン時に自動的に設定されます。

umaskの設定を確認するファイル

umaskの設定は、シェルの設定ファイルに記述されていることが多いです。

以下のファイルを確認することで、umaskの設定を確認できます。

スクロールできます
ファイル名説明
~/.bashrcユーザーのシェル設定ファイル
~/.bash_profileログインシェルの設定ファイル
/etc/profileシステム全体の設定ファイル
/etc/bash.bashrc全ユーザーに適用されるbash設定ファイル

これらのファイルを確認することで、umaskの設定がどのようになっているかを把握できます。

umaskとファイル・ディレクトリのパーミッション

ファイル作成時のデフォルトパーミッション

Linuxでは、新規にファイルを作成する際のデフォルトパーミッションは通常666(rw-rw-rw-)です。

これは、ユーザー、グループ、その他のユーザーがすべて読み書きできる権限を持つことを意味します。

しかし、umaskの設定によって、このデフォルトパーミッションから特定の権限が取り除かれます。

たとえば、umaskが022の場合、最終的なパーミッションは644(rw-r–r–)になります。

ディレクトリ作成時のデフォルトパーミッション

新規にディレクトリを作成する際のデフォルトパーミッションは通常777(rwxrwxrwx)です。

これは、すべてのユーザーが読み取り、書き込み、実行できる権限を持つことを示します。

umaskの設定により、これも制限されます。

たとえば、umaskが027の場合、最終的なパーミッションは750(rwxr-x—)となり、グループとその他のユーザーの権限が制限されます。

umaskによるパーミッションの制限

umaskは、ファイルやディレクトリの作成時にどの権限を取り除くかを指定します。

umaskの値は、デフォルトのパーミッションから引かれる形で適用されます。

以下の表は、umaskの値と最終的なパーミッションの関係を示しています。

スクロールできます
umask値ファイルの最終パーミッションディレクトリの最終パーミッション
000666 (rw-rw-rw-)777 (rwxrwxrwx)
022644 (rw-r–r–)755 (rwxr-xr-x)
077600 (rw——-)700 (rwx——)
002664 (rw-rw-r–)775 (rwxrwxr-x)

umaskとchmodの違い

umaskとchmodは、ファイルやディレクトリのパーミッションを管理するための異なるツールです。

主な違いは以下の通りです。

  • umask: 新規に作成されるファイルやディレクトリのデフォルトパーミッションを制御します。

umaskは、作成時に適用されるため、既存のファイルやディレクトリには影響を与えません。

  • chmod: 既存のファイルやディレクトリのパーミッションを変更するために使用されます。

chmodを使うことで、特定のファイルやディレクトリの権限を直接変更できます。

このように、umaskは新規作成時の設定に関与し、chmodは既存の権限を変更するためのコマンドです。

umaskの設定例

umask 022の意味と効果

umask 022は、ファイルとディレクトリのデフォルトパーミッションから、グループとその他のユーザーの書き込み権限を取り除く設定です。

具体的には、ファイルの最終パーミッションは644(rw-r–r–)、ディレクトリの最終パーミッションは755(rwxr-xr-x)になります。

この設定により、ユーザーはファイルを自由に編集できますが、他のユーザーはそのファイルを変更できません。

umask 077の意味と効果

umask 077は、ファイルとディレクトリのデフォルトパーミッションから、すべてのユーザーに対する権限を取り除く設定です。

これにより、ファイルの最終パーミッションは600(rw——-)、ディレクトリの最終パーミッションは700(rwx——)となります。

この設定は、非常に高いセキュリティを提供し、作成したファイルやディレクトリに対して他のユーザーからのアクセスを完全に遮断します。

umask 002の意味と効果

umask 002は、ファイルとディレクトリのデフォルトパーミッションから、その他のユーザーの書き込み権限を取り除く設定です。

ファイルの最終パーミッションは664(rw-rw-r–)、ディレクトリの最終パーミッションは775(rwxrwxr-x)になります。

この設定により、ユーザーとグループのメンバーはファイルを編集できますが、その他のユーザーは読み取りのみ可能です。

主に、グループでの共同作業に適しています。

umask 027の意味と効果

umask 027は、ファイルとディレクトリのデフォルトパーミッションから、グループの書き込み権限とその他のユーザーのすべての権限を取り除く設定です。

ファイルの最終パーミッションは640(rw-r—–)、ディレクトリの最終パーミッションは750(rwxr-x—)となります。

この設定は、ユーザーがファイルを編集できる一方で、グループのメンバーには読み取り権限のみを与え、その他のユーザーにはアクセスを許可しないため、セキュリティを強化するのに役立ちます。

umaskの応用

umaskを使ったセキュリティ強化

umaskを適切に設定することで、システムのセキュリティを強化できます。

特に、umaskを077に設定することで、新規に作成されるファイルやディレクトリに対して、他のユーザーからのアクセスを完全に遮断できます。

これにより、機密情報や重要なデータが不正にアクセスされるリスクを低減できます。

また、umaskを利用して、特定のプロジェクトや作業環境において、必要な権限だけを付与することで、セキュリティポリシーを強化することが可能です。

特定のユーザーやグループに対するumask設定

特定のユーザーやグループに対して異なるumask設定を行うこともできます。

たとえば、プロジェクトチームのメンバーには、umask 002を設定して共同作業を促進し、一般ユーザーにはumask 022を設定してセキュリティを確保することができます。

これを実現するためには、各ユーザーのシェル設定ファイル(例: ~/.bashrc)にumaskコマンドを追加することで、ログイン時に自動的に適用されるようにします。

スクリプト内でのumaskの活用

スクリプト内でumaskを設定することで、スクリプトが作成するファイルやディレクトリのパーミッションを制御できます。

たとえば、スクリプトの冒頭でumaskを設定することで、そのスクリプトが生成するすべてのファイルに対して一貫したパーミッションを適用できます。

以下は、スクリプト内でumaskを設定する例です。

#!/bin/bash
umask 027  # umaskを設定
touch newfile.txt  # 新しいファイルを作成
mkdir newdir  # 新しいディレクトリを作成

このスクリプトを実行すると、newfile.txtは640(rw-r—–)、newdirは750(rwxr-x—)のパーミッションで作成されます。

umaskとシステム全体のパーミッション管理

umaskは、システム全体のパーミッション管理にも重要な役割を果たします。

システム管理者は、/etc/profile/etc/bash.bashrcなどの設定ファイルを通じて、全ユーザーに対するデフォルトのumask設定を行うことができます。

これにより、全体のセキュリティポリシーを統一し、ユーザーが新規に作成するファイルやディレクトリのパーミッションを一元管理できます。

たとえば、企業のセキュリティポリシーに基づいて、umaskを022に設定することで、全ユーザーに対して適切なアクセス制御を実施することが可能です。

よくある質問

umaskの値はどこで設定されていますか?

umaskの値は、主に以下のファイルで設定されています。

これらのファイルを確認することで、umaskの設定を把握できます。

  • ~/.bashrc~/.bash_profile: 各ユーザーのシェル設定ファイルで、ユーザーごとにumaskを設定できます。
  • /etc/profile: システム全体の設定ファイルで、全ユーザーに適用されるumaskを設定できます。
  • /etc/bash.bashrc: bashシェルの全ユーザーに対する設定ファイルです。

これらのファイルにumaskの設定を追加することで、ログイン時やシェル起動時に自動的に適用されます。

umaskの設定はどのシェルで有効ですか?

umaskの設定は、主にbashやshなどのシェルで有効です。

各シェルには独自の設定ファイルがあり、umaskの設定を行うことができます。

たとえば、bashシェルの場合は~/.bashrc~/.bash_profileに設定を追加します。

zshやcshなど、他のシェルでも同様に設定ファイルが存在し、それぞれのシェルに応じた方法でumaskを設定できます。

ただし、シェルによって設定ファイルの名称や場所が異なるため、使用しているシェルに応じた設定を行う必要があります。

umaskとACL(アクセス制御リスト)はどのように連携しますか?

umaskとACL(アクセス制御リスト)は、ファイルやディレクトリのアクセス権を管理するための異なる手法ですが、連携して使用することができます。

umaskは新規作成時のデフォルトパーミッションを制御し、ACLは特定のユーザーやグループに対して細かいアクセス権を設定することができます。

たとえば、umaskを使用して基本的なパーミッションを設定した後、ACLを利用して特定のユーザーに対して追加の権限を付与することができます。

これにより、セキュリティを強化しつつ、必要なアクセス権を柔軟に管理することが可能です。

ACLを使用することで、umaskでは設定できないような詳細な権限管理が実現できます。

まとめ

この記事では、umaskコマンドの基本的な使い方や、ファイル・ディレクトリのパーミッションに与える影響について詳しく解説しました。

また、umaskを活用したセキュリティ強化や特定のユーザーに対する設定方法、スクリプト内での利用法についても触れました。

これを機に、umaskの設定を見直し、システムのセキュリティを向上させるための具体的なアクションを検討してみてはいかがでしょうか。

  • URLをコピーしました!
目次から探す