0

我想检查给我的 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
    }

我用来实现它。一旦我弄清楚如何获取有效用户所属组的向量,我就可以自己完成。

谢谢,

4

2 回答 2

1

您始终可以使用以下groups命令:

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

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

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

于 2013-10-30T18:42:58.670 回答
0

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

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

file.access(outputDir,2) == 0
于 2013-10-30T18:04:34.107 回答