[R-sig-DB] dbWriteTable permission problem on Mac OSX

Dirk Eddelbuettel edd @end|ng |rom deb|@n@org
Thu Nov 5 16:55:56 CET 2009


On 5 November 2009 at 10:45, McGehee, Robert wrote:
| My /tmp directory also has a sticky bit. 
| 
| Here's my guess of the problem. This chunk of code from the
| 'dbWriteTable' method 'postgresqlWriteTable' specifies different
| directories for Linux and non-Linux (e.g. Mac) tempfiles. 
|     if(as.character(Sys.info()["sysname"])=="Linux")
|         fn <- tempfile("rsdbi","/tmp")
|     else
|         fn <- tempfile("rsdbi")

Spot on!  Sameer added this on my recommendation based on the very same /tmp
issue problem.  Too bad I couldn't remember that this week :-/

| This difference is significant because on my Mac, the data file is saved
| inside an R tempdir with only user read permissions:
| drwx------   2 a347549 pcap       40 Oct 30 14:05 Rtmp8fgNQf/
| 
| while on Linux, the file is saved in /tmp, with whatever permissions
| that has. So, presumably either patching the code as follows:
| -    if(as.character(Sys.info()["sysname"])=="Linux")
| +    if(as.character(Sys.info()["sysname"]) %in% c("Linux", "Darwin"))

Agreed.  Explicitly CC'ing Neil for OS X advice -- Darwin is the best test?

| or finding a way to have R create a tempdir with more generous
| permissions would solve the problem. Changing my umask settings didn't
| seem to change the permissions of the R tempdir--I'm not sure how that
| is specified. Alternatively, I suppose the directory could be an option
| to let the user specify somewhere readable by both 'postgres' and the
| user's R session.

I think you can't easily which is why we created the workaround with the
temporary directory directly below /tmp, rather than by default in R's
tempdir /tmp/Rtmp...../

I think we got this bug!

Dirk


| --Robert
| 
| -----Original Message-----
| From: Dirk Eddelbuettel [mailto:edd using debian.org] 
| Sent: Thursday, November 05, 2009 9:09 AM
| To: McGehee, Robert
| Cc: Prasenjit Kapat; r-sig-db using stat.math.ethz.ch
| Subject: Re: [R-sig-DB] dbWriteTable permission problem on Mac OSX
| 
| 
| On 5 November 2009 at 08:39, McGehee, Robert wrote:
| | So following the spirit of Dirk's advice, I resolved the problem by
| running
| | the PostgreSQL database from my user account, rather than the
| 'postgres' user
| | I had been using. Imports happened smoothly afterwards. Presumably
| 'postgres'
| | couldn't see the temp files that my user was creating.  
| 
| Hm, my postgres servers (running versions 8.2 and 8.3, 8.2 has the
| default
| port)  run as user postgres:
| 
| edd using ron:~> pstree -u | grep postgres
|      |-postgres(postgres)---2*[postgres]
|      |-postgres(postgres)---4*[postgres]
| edd using ron:> 
| 
| Let's look at modes of /tmp, I have
| 
| edd using ron:~/src/debian/CRAN> ls -ld /tmp
| drwxrwxrwt 43 root root 19456 2009-11-05 08:04 /tmp
| 
| So there is a sticky bit set for 'other' (the trailing t).  What do you
| have?
| 
| | Also on this note, the first error I encountered with 'dbWriteTable'
| when
| | running from my user account and pg from the 'postgres' account
| informed me
| | that the '\copy' command required superuser access. Granting my pg
| account
| | Postgres superuser abilities fixed that, but I think it should be
| noted
| | that the current implementation seems to require a wide-open set-up to
| use
| | bulk copy. 
| | 
| | I'm still keen to try out Whit's solution as well as a direct binary
| | connection may get around the permission problems and has the
| potential to
| | be faster. I'll report back if I discover anything interesting for the
| | group. 
| 
| Yes, it would also be nice to get that ported into RPostgreSQL.
| 
| Dirk
| 
| -- 
| Three out of two people have difficulties with fractions.
| 

-- 
Three out of two people have difficulties with fractions.




More information about the R-sig-DB mailing list