UNIX/Linuxの部屋 コマンド:umask

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド umask ファイル・ディレクトリ生成マスクの設定。シェルの内部コマンド。 このエントリーをはてなブックマークに追加

UNIX/Linux の umask とは、新規作成するファイル・ディレクトリのパーミッションを決めるための値である。umask コマンドを使うと umask 値を表示したり設定したりすることができる。



umask の概念
umask とは、ファイル・ディレクトリを新規作成する際に、パーミッションについて許可*しない*ビットを指示するものである。例えば、ファイル作成時には 666 というパーミッションを作ろうとするが、umask が 022 である場合、666 から 022 を引いた 644 というパーミッションで新規ファイルが作られることになる。

umask という概念、umask コマンドは、すべての UNIX/Linux に存在する。

umask コマンドの基本的な使い方
umask を設定するには、
% umask 022
などとする。作成したファイルを誰にも見せたくなかったら、
% umask 066
とすればいいし、誰にでも読み書きしてほしかったら
% umask 000
とすればいい (もちろんお勧めはしない)。

引数を省略すると、現在の umask の値を表示する。
% umask
22
→ csh・tcsh の場合、22 という形式。
% umask
0022
→ sh・bash の場合、0022 となるようだ。
% umask -S
u=rwx,g=rx,o=rx
→ sh・bash の場合、-S でシンボリックな umask 値を表示する。

umask 値を何にすべきか
umask 値を何にすべきか、002・022 など、どれがよいか。それは、そのマシンのグループ設定ポリシーによる。

1桁目は自分自身のパーミッションなので、0 でよい。
2桁目はグループのパーミッション。グループには誰が属しているか、その人たちに見えてよいか、更新できてよいか、で決めるとよい。
3桁目はその他 (other) のパーミッション。一般的には誰でも更新可能というのは危険すぎるので、w は落とすべき。となると umask 値は 6 (---) か 2 (r--) が妥当だろう。

典型的な umask 値一覧
以下、典型的な umask 値を示す。新規ファイル作成は touch、新規ディレクトリ作成は mkdir コマンドで試してみてほしい。

ファイルの新規作成時:
  • umask が 000 なら新規ファイルのパーミッションは 666 (rw-rw-rw-)
  • umask が 002 なら新規ファイルのパーミッションは 664 (rw-rw-r--)
  • umask が 020 なら新規ファイルのパーミッションは 646 (rw-r--rw-)
  • umask が 022 なら新規ファイルのパーミッションは 644 (rw-r--r--)
  • umask が 060 なら新規ファイルのパーミッションは 606 (rw----rw-)
  • umask が 066 なら新規ファイルのパーミッションは 600 (rw-------)

ディレクトリの新規作成時:
  • umask が 000 なら新規ディレクトリのパーミッションは 777 (rwxrwxrwx)
  • umask が 002 なら新規ディレクトリのパーミッションは 775 (rwxrwxr-x)
  • umask が 020 なら新規ディレクトリのパーミッションは 755 (rwxr-xrwx)
  • umask が 022 なら新規ディレクトリのパーミッションは 755 (rwxr-xr-x)
  • umask が 060 なら新規ディレクトリのパーミッションは 707 (rwx---rwx)
  • umask が 066 なら新規ディレクトリのパーミッションは 700 (rwx------)

umask が影響を与えるのは、新規ファイル・ディレクトリの作成時だけであって、既に存在するファイルのパーミッションには全く影響を与えない。また、umask の値は親プロセスから引き継がれるが、プロセスごとに独自の umask を設定することができる。

普通は、~/.login や ~/.cshrc の中に umask 022 などと記述しておき、ログインするたびに自動的に umask が設定されるようにしておく。
>> Solaris10オンラインマニュアル(man) Solaris10 umask(1)
>> Linuxオンラインマニュアル(man) Linux umask(2)

関数 umask ファイル新規作成時のパーミッションを指定するシステムコール このエントリーをはてなブックマークに追加