从R中找出用户所属的组

时间:2013-10-30 17:40:03

标签: 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来实现它。一旦我弄清楚如何获得有效用户所属的组的向量,我就可以自己完成。

谢谢,

2 个答案:

答案 0 :(得分:1)

您可以随时弹出并使用groups命令:

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

或者,围绕Unix API相关部分的Rcpp包装器将完成这项工作。

(显然这在Windows上大多不起作用)

答案 1 :(得分:0)

我似乎找到了一个检查目录(或文件)是否可写的解决方案。但是,我还不知道如何获取用户组,因此虽然我将此作为答案发布,但我不接受它,因为它没有解决主标题中的问题。

要检查导演outputDir是否可写,只需检查此条件是否为真:

file.access(outputDir,2) == 0