Linuxとコマンドラインの基礎
touch は新しいファイルを 666 から、mkdir は新しいディレクトリを 777 から、umask のビットを取り除いた権限で作る。umask が 027 のシェルで新しいファイルと新しいディレクトリを作ったときの、それぞれの権限の組み合わせとして、正しいものはどれか。
- Aファイル 637、ディレクトリ 750
- Bファイル 640、ディレクトリ 750
- Cファイル 750、ディレクトリ 750
答えと解説を見る
正解:B. ファイル 640、ディレクトリ 750
umask は、新しく作るファイルやディレクトリから「取り除く」権限のビットを表します。027 はグループから書き込み(2)を、その他から読み取り・書き込み・実行(7)を取り除くので、ファイルは 666 から rw-r-----(640)、ディレクトリは 777 から rwxr-x---(750)になります。これは8進数の引き算ではなく、ビットごとに取り除く計算です(666 AND NOT 027)。よく使われる umask 022 では、同じ計算でファイルが 644、ディレクトリが 755 になります。
- A. 666 から 027 を8進数で引き算した値です。umask はビットごとに取り除く働きなので、引き算とは結果が違うことがあります(022 なら、どちらも 644 になります)。
- B. 正しい。ファイルは 666 から 640 に、ディレクトリは 777 から 750 になります。
- C. ファイルは 777 ではなく 666 をもとに作られるので、新しいファイルに実行の権限は付きません。