Mac でデフォルトの umask 設定を行う.
http://www.macosxhints.com/article.php?story=20031211073631814
Mac でユーザさんが作るファイルのデフォルトのパーミションを 660 としたい. つまり,other の読み取り/書き込み権限を落としたい.
ThinkerTool 3.1 というツールでは, 個別のユーザ毎に umask を設定することができるという.
これを応用して,全体ユーザのデフォルトを設定すれば...
Mac OS の設定ファイル
/System/Library/Frameworks/PreferencePanes.frmework/Versions/A/Resources/global.defaults
の中に,"NSUmask" という設定値がある.
この値はデフォルトが "18" となっており, この値はオクタル(8進数)の umask の値を 10進数にしたものだ. (つまり 022 を 10進にしたもの)
この値を変えてやることでうまくいくんではないか. つまり,027 を10進にした "23" を NSUmask の値とするのだ.
とはいえ, このファイルを直接いじるのは恐ろしい.
Mac の流儀に従えば,/Library 以下に何かプリファレンスファイルを 作ってやればいいのか.
で,先の TinkerTool での動きを見てみると, 各個人での設定を行うために
~/Library/Preferences/.GlobalPreferences.plist
というファイルに次のような行を追加しているようだ.
<key>NSUmask</key> <integer>my-umask-decimal</integer>
("my-umask-decimal" のところには,前述の 10進の数字が入る)
これにならい,
/Library/Preferences/.GlobalPreferences.plist
の先頭に次のような内容を追加してやればいい.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>NSUmask</key> <--- <integer>23</integer> <--- <key>AppleLanguages</key> <array> <string>English</string> ...
Tiger では,上記のファイルはバイナリとなっていて テキストエディタでは直接編集できない.
そのため,編集前後で以下のコマンドを使う.
編集前
plutil -convert xml1 /Library/Preferences/.GlobalPreferences.plist
編集後
plutil -convert binary1 /Library/Preferences/.GlobalPreferences.plist
Panther 以上では,defaults コマンドが使えるので, 管理者になって
sudo defaults write /Library/Preferences/.GlobalPreferences NSUmask 23
ってなコマンドを打ってやってもいいみたい.
Yosemite 以降では launchctl で umask を設定するようだ.
sudo launchctl config user umask 027
その他,詳しいことは 「OS X でカスタム umask を設定する」 https://support.apple.com/ja-jp/HT201684
GlobalPreferences の設定を変更するとシステム全体に及ぶので, アプリケーションによっては不具合が出るかも知れないので, もっと簡単に,Finder からのフォルダ作成での umask 設定の仕方が載っていた. http://www.makemacwork.com/secure-finder-permissions.htm
管理者ユーザになって以下のコマンドを実行する.
defaults write /Library/Preferences/com.apple.finder umask -int 077