Perl5 リファレンス



       umask EXPR

       umask   Sets the umask for the process to EXPR and returns
               the previous value.  If EXPR is omitted, merely
               returns the current umask.

               The Unix permission `rwxr-x---' is represented as
               three sets of three bits, or three octal digits:
               `0750' (the leading 0 indicates octal and isn't
               one of the digits).  The `umask' value is such a
               number representing disabled permissions bits.
               The permission (or "mode") values you pass `mkdir'
               or `sysopen' are modified by your umask, so even
               if you tell `sysopen' to create a file with
               permissions `0777', if your umask is `0022' then
               the file will actually be created with permissions
               `0755'.  If your `umask' were `0027' (group can't
               write; others can't read, write, or execute), then
               passing `sysopen' `0666' would create a file with
               mode `0640' (`0666 &~ 027' is `0640').

               Here's some advice: supply a creation mode of
               `0666' for regular files (in `sysopen') and one of
               `0777' for directories (in `mkdir') and executable
               files.  This gives users the freedom of choice: if
               they want protected files, they might choose
               process umasks of `022', `027', or even the
               particularly antisocial mask of `077'.  Programs
               should rarely if ever make policy decisions better
               left to the user.  The exception to this is when
               writing files that should be kept private: mail
               files, web browser cookies, .rhosts files, and so
               on.

               If umask(2) is not implemented on your system and
               you are trying to restrict access for yourself
               (i.e., (EXPR & 0700) > 0), produces a fatal error
               at run time.  If umask(2) is not implemented and
               you are not trying to restrict access for
               yourself, returns `undef'.

               Remember that a umask is a number, usually given
               in octal; it is not a string of octal digits.  See
               also the oct entry elsewhere in this document, if
               all you have is a string.


Perl5リファレンスに戻る