macOS でカスタム umask を設定する

Mac 上のすべてのファイルやフォルダには、一連のアクセス権が設定されています。新しいファイルやフォルダを作成する際に、umask によって、こうしたアクセス権の設定が決められます。

アクセス権と umask について

以下の手順は、エンタープライズユーザを対象として想定しています。ファイルのアクセス権と umask を変更する際は、慎重を期してください。これらの設定を誤ると、Mac のファイル、フォルダ、App のセキュリティを損なうおそれがあります。一部の App が動作しなくなることもあります。

アクセス権

Mac の起動ディスクや接続先のボリュームに保存されているファイル、フォルダ、App には、それぞれアクセス権が設定されています。アクセス権によって、そのファイル、フォルダ、または App を読み取り/書き込み/実行できるユーザアカウントが決まります。たとえば、POSIX アクセス権やアクセス制御リスト (ACL) などがあります。 

ユーザの POSIX アクセス権の制限を厳しくしたり緩くしたりするには、umask の値を調整します。

umask

3 桁の数値が、ファイルの POSIX アクセス権を表します。ターミナルでアクセス権を表示した場合、この 3 桁表示になります。各桁は、0 ~ 7 のいずれかになります。ファイルを作成すると、デフォルトの値 (通常、ファイルの場合は 666、フォルダの場合は 777) から umask 値が引かれて、新しいファイルやフォルダのアクセス権が決められます。

たとえば、デフォルトの umask が 022 の場合、新しいファイルのアクセス権は 644、新しいフォルダのアクセス権は 755 になります。この場合、グループやほかのユーザはファイルを読み取り、フォルダを開くことができますが、変更は所有者しかできません。 

umask についてしっかりと把握してから、次に進んでください。umask の設定を間違えると、意図しない形で、ファイルにアクセスできなくなったり、ほかのユーザにアクセスを認めることになったりしてしまいます。詳しくは、chmod(1) man ページの「MODES」セクションを参照してください。

umask はさまざまな場所で設定できます。設定した場所に応じて、違う App に作用します。

macOS High Sierra、macOS Sierra、OS X El Capitan、OS X Yosemite のユーザアプリケーションの umask

OS X Yosemite 10.10.3 以降で、管理者としてログインして、ターミナルで以下のコマンドを実行します。

sudo launchctl config user umask nnn

nnn の部分は、希望の umask 値 (027、002 など) に置き換えてください。このコマンドを実行した後、必要に応じて Mac を再起動します。

このコマンドは、ユーザが開くすべての App (Finder、テキストエディット、Final Cut Pro など) について、ユーザの umask を設定します。また、コマンドラインからユーザがアクセスする App についても umask が設定されます。該当する App で作成される新しいファイルに対して設定されるアクセス権も、このコマンドに左右されます。

「[構成ファイル] に書き込めませんでした。ファイルまたはディレクトリがありません」というメッセージが表示される場合は、「/private/var/db/com.apple.xpc.launchd/config」が存在しているか確認してください。このフォルダがない場合は、以下のコマンドを使って作成してください。

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

このフォルダを作成した後で、sudo launchctl config user umask nnn コマンドをもう一度実行してください。OS X Yosemite で umask を設定する方法については、man launchctl コマンドを実行してください。

OS X Yosemite のシステムプロセスの umask

OS X Yosemite 10.10.3 以降で、管理者としてログインして、ターミナルで以下のコマンドを実行します。

sudo launchctl config system umask nnn

nnn の部分は、希望の umask 値 (027、002 など) に置き換えてください。このコマンドを実行した後、必要に応じて Mac を再起動します。

このコマンドで、システムコンテキストでユーザが実行するデーモンについて、ユーザの umask が設定されます。この値を変更すると、システムソフトウェアで使われるファイルのアクセス権が変更される可能性があるため、お勧めできません。アクセス権の制限を厳しくしすぎると、従属するソフトウェアが機能しなくなる場合があります。アクセス権の制限が緩すぎると、セキュリティに支障をきたすおそれがあります。

「[構成ファイル] に書き込めませんでした。ファイルまたはディレクトリがありません」というメッセージが表示される場合は、「/private/var/db/com.apple.xpc.launchd/config」が存在しているか確認してください。このフォルダがない場合は、以下のコマンドを使って作成してください。

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

OS X Yosemite で umask を設定する方法については、man launchctl コマンドを実行してください。

OS X Mavericks 以前のユーザアプリケーションの umask

OS X Mavericks 以前では、「/etc/launchd-user.conf」ファイルを作成し、その中に「umask nnn」と記述しておきます。nnn の部分は、希望の umask 値 (027、002 など) に置き換えてください。ユーザが開くすべての App (Finder、テキストエディット、Final Cut Pro など) について、ユーザの umask が設定されます。それらの App で作成される新しいファイルに対して設定されるアクセス権も決まります。

OS X Lion をお使いの場合は、OS X Lion 10.7.4 以降にアップデートしてください。アップデート後、Finder で作成されるファイルやフォルダにユーザの umask が適用されるようになります。

OS X Mavericks 以前のシステムプロセスの umask

Yosemite 以前のバージョンの OS X では、「/etc/launchd.conf」ファイルを作成し、その中に「umask nnn」と記述しておきます。nnn の部分は、希望の umask 値 (027、002 など) に置き換えてください。すべてのプロセスの umask が設定されます。この値を変更すると、システムソフトウェアで使われるファイルのアクセス権が変更される可能性があるため、お勧めできません。アクセス権の制限を厳しくしすぎると、従属するソフトウェアが機能しなくなる場合があります。アクセス権の制限が緩すぎると、セキュリティに支障をきたすおそれがあります。

特定の LaunchAgent または LaunchDaemon の umask

Mac OS X 10.4 以降では、上級者の管理者が特定の LaunchAgent または LaunchDaemon に個別の umask を設定できます。その場合は、「launchd plist」ファイルに umask 値を追加しておきます。ここで設定した値は、該当するプロセスについてのみ、「/etc/launchd.conf」または「/etc/launchd-user.conf」の umask 設定より優先されます。このオプションについて詳しくは、man launchd.plist コマンドを実行してください。

公開日: