Skip to content

create a folder with mode '0777'

3 messages · Xian Zhang, Patrick Breheny, Brian Ripley

#
Dear list,

I am trying to create a folder structure, say 'test/sub', and set the
folder and sub folder to be writable to everyone.

By default

dir.create('test/sub', recursive=TRUE, mode='0777')

creates folders with mode: drwxr-xr-x

After

Sys.chmod('test/sub',mode='0777')

The folder 'test' is: drwxr-xr-x
and the sub folder 'sub' is: drwxrwxrwx

The question is how to generate a folder and sub folders, with every
folder being drwxrwxrwx ?

I am using a linux/redhat system.

Thank you for your help.
Xian
#
Linux systems have a user mask that limits the file mode creation 
possibilities of any processes launched from that shell.  If you check 
your /etc/profile file, you will see the line

umask 022

This prevents you by default from creating files with write access for 
everyone except the user.  In other words, this is a linux issue, not an 
R issue -- the same thing happens when you use mkdir.  This can be 
overridden, however.  For example,

system("chmod -R 0777 test")

which recursively changes the mode of test and all its subdirectories 
from within R.

_______________________
Patrick Breheny
Assistant Professor
Department of Biostatistics
Department of Statistics
University of Kentucky
On 05/04/2011 09:55 AM, Xian Zhang wrote:
#
Please read the comments in the help about umask (and in the posting 
guide about the 'at a minimum' information required in postings, for 
the details do depend on the version of R and it seems yours is not 
current).

In R 2.13.0:

      ?dir.create? creates the last element of the path, unless
      ?recursive = TRUE?.  Trailing path separators are discarded.  The
      mode will be modified by the ?umask? setting in the same way as
      for the system function ?mkdir?.

so try

um <- Sys.umask(0)
dir.create('test/sub', recursive=TRUE)
Sys.umask(um)

(Whether mkdir -p respects umask depends on your OS ... and the 
command-line command and the system call of that name may differ.)
On Wed, 4 May 2011, Xian Zhang wrote: