最近、SnowLeopardにアップグレードしました。 MacPortsによって書かれたいくつかのファイルが間違った許可でインストールされていることに気づきました-それらは0077のumaskで書かれています。私は問題を絞り込んだと思います:
port
コマンドは、Sudo
を介して呼び出されます。.bashrc
ファイルは0077のumaskを指定しています。とにかくSudo
に古い振る舞いを使わせることはありますか? port installed
、port outdated
などの単純なコマンドを実行するには、Sudo
を使用する必要があるため、今のところ、ちょっと面倒です。
(この問題については、この MacPortsチケット で詳しく説明しています。)
Sudoのumask
オプションを発見し、/etc/sudoers
に次の行を追加しました。
Defaults umask=0022
ただし、Sudo
で使用されるrealumaskはであるため、これは期待どおりに機能しませんでした。このデフォルトマスクを使用したユーザーマスクのunion。 Sudo
のumaskの動作をオーバーライドし、デフォルトを直接使用するため(つまり、ユーザーのunionとデフォルトのSudoマスクではありません) )、以下を追加できます。
Defaults umask_override
.bashrc
構成スクリプトに次を追加することになりました。
# Mimic old behavior of `Sudo` on OS X Snow Leopard
Sudo() {
old=$(umask)
umask 0022
command Sudo "$@"
umask $old
}
Mac OS X 10.7(Lion)には、umask_overrideをサポートするバージョンのSudoがついに登場しました。記録のために、これは私のために働きます:
Defaults umask_override
Defaults umask=0022
どうですか:
Sudo22() {
local UMASK=`umask`;
umask 22;
Sudo "$@";
umask $UMASK
}
あなたの.bashrcで
if [[ $EUID -eq 0 ]]; then
umask 0022
else
umask 0077
fi
ちなみに、新しいオプション 'umask_override'としてのSudoの現在のバージョン。これにより、umaskがマージされなくなるため、umaskも下げることができるはずです。残念ながら、Mac OS X10.6.6はこのバージョンのSudoを搭載していないようです...