2013-10-30 51 views
0

我想檢查給予我的R腳本的輸出目錄是否可寫。但爲了檢查,我還需要檢查當前有效用戶所屬的組,並且我似乎無法找出如何做到這一點。該查詢也不會很好地谷歌。從內部查找用戶所屬的組R

這是我迄今爲止

is.writable <- function(dir) 
    { 
     if(file.info(outputDir)['size'] == NA || file.info(outputDir)['isdir'] == FALSE) 
      return FALSE 
     mode <- file.info['mode'] 
     owner <- file.info['uname'] 
     fileGroup <- file.info['grname'] 
     user <- Sys.info()[["effective_user"]] 

     if(bitwAnd(mode,2) != 0) # every can access 
      return TRUE 
     #if(bitwAnd(mode,16) != 0) # 16=0020 in octal, some group has access 
     if(bitwAnd(mode,128) != 0) # 128 = 0200 in octal, the owner has write access 
      return user == owner 
    } 

我以前this來實現它。一旦我找出如何獲得有效用戶所屬的組的矢量,我就能夠自己做到這一點。

謝謝

回答

1

您可以隨時掏出並使用groups命令:

> groups = strsplit(system("groups",intern=TRUE)," ")[[1]] 
> groups 
[1] "rowlings" "adm"  "sudo"  "lpadmin" "sambashare" 

另外一個RCPP包裝整個Unix API的相關部分將完成這項工作。 (顯然這在Windows上大多不起作用)

0

我似乎已經找到了解決方案,用於檢查一個目錄(或文件)是否可寫。但是,我還不知道如何獲得用戶組,因此雖然我將其作爲答案發布,但我不會接受它,因爲它沒有解決主標題中的問題。

要檢查董事outputDir是否可寫,只是檢查這個條件是否爲真:

file.access(outputDir,2) == 0 
相關問題