関数 mkdir には、ディレクトリパスとアクセス許可の 2 つのパラメータがあります
例 mkdir(/tmp/test,0777)
その場合、取得される許可コードは必ずしも上記で設定されたものであるとは限りません。たとえば、umask が 022 の場合、これが実際の許可コードです。上記で取得した権限コードは 0755 で、書き込み権限はありません
したがって、本当に 0777 の権限を取得したい場合は、コード
$oldumask=umask(0);
mkdir(test ,0777);
umask($oldumask);
?>
umask() は現在の umask コードをチェックして変更し、現在の umask コードを返します
umask とは何ですか?
ファイルを作成するためのデフォルトの権限を取得するにはどうすればよいですか? このデフォルトの権限を変更するにはどうすればよいですか?
ログイン時システムに後で作成されるファイルには常にデフォルトの権限が与えられますが、この権限はどこから来るのでしょうか?これが umask の役割です。 umask は、ユーザーが作成したファイルのデフォルトのアクセス許可を設定します。これは、chmod がファイルのアクセス許可コードを設定するのに対し、umask は「補完コード」を設定します。通常、umask 値は /etc/profile、$HOME/.bash_profile、または $HOME/.profile に設定されます。
umask 値の計算方法?
umask コマンドを使用すると、ユーザーのタイプ (ファイル所有者、同じグループ内のユーザー、他のユーザー)。ファイルの場合、この数値の最大値は 6 です。システムでは、テキスト ファイルの作成時に実行権限を与えることはできません。作成後に chmod コマンドを使用して、この権限を増やす必要があります。ディレクトリでは実行権限を設定できるため、ディレクトリの場合、umask の最大数は 7 までです。
このコマンドの一般的な形式は umask nnn です。nnn は 000 ~ 777 です。
umask はアクセス許可から対応するビットを「取り除く」ということだけを覚えておく必要があります。
例: umask 値が 022 の場合、デフォルトのディレクトリ権限は 755、デフォルトのファイル権限は 644 です。