コマンド
umask
ファイル・ディレクトリ生成マスクの設定。シェルの内部コマンド。
UNIX/Linux の umask とは、新規作成するファイル・ディレクトリのパーミッションを決めるための値である。umask コマンドを使うと umask 値を表示したり設定したりすることができる。
●umask の概念
umask とは、ファイル・ディレクトリを新規作成する際に、パーミッションについて許可*しない*ビットを指示するものである。例えば、ファイル作成時には 666 というパーミッションを作ろうとするが、umask が 022 である場合、666 から 022 を引いた 644 というパーミッションで新規ファイルが作られることになる。
umask という概念、umask コマンドは、すべての UNIX/Linux に存在する。
●umask コマンドの基本的な使い方
umask を設定するには、
などとする。作成したファイルを誰にも見せたくなかったら、
とすればいいし、誰にでも読み書きしてほしかったら
とすればいい (もちろんお勧めはしない)。
引数を省略すると、現在の 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 が設定されるようにしておく。
関数
umask
ファイル新規作成時のパーミッションを指定するシステムコール