Go 更改谷歌云功能的权限位

Go 更改谷歌云功能的权限位,go,google-cloud-functions,Go,Google Cloud Functions,我在Go 1.13中创建了一个函数,使用SSL从SQL数据库获取数据,并上传这些文件 因此,我将connectionString设置为: connString := fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=verify-ca sslrootcert=%s sslkey=%s sslcert=%s", os.Getenv("HOST"), os.Getenv(&q

我在Go 1.13中创建了一个函数,使用SSL从SQL数据库获取数据,并上传这些文件

因此,我将connectionString设置为:

connString := fmt.Sprintf("host=%s port=%s dbname=%s user=%s password=%s sslmode=verify-ca sslrootcert=%s sslkey=%s sslcert=%s", os.Getenv("HOST"), os.Getenv("PORT1"), os.Getenv("DBNAME"), os.Getenv("USER"), os.Getenv("PASSWORD"), "pathto/server-ca.pem", "pathto/client-cert.pem", "pathto/client-key.pem")
我认为connectionstring是正确的,但是我得到了如下错误:

pq:私钥文件具有组或全局访问权限。权限应为u=rw(0600)或更小


有没有办法修改云函数文件中的权限位?

您无法做到这一点,文件是不可变的。解决方案是将其复制到
/tmp
目录中

    f, err := os.Open("pathto/client-key.pem")
    if err != nil {
        log.Fatal(err)
    }
    defer f.Close()

    d, err := os.Open("/tmp/client-key.pem")
    if err != nil {
        log.Fatal(err)
    }
    defer d.Close()

    _, err = io.Copy(d, f)
    if err != nil {
        log.Fatal(err)
    }

    err = d.Chmod( 0600)
    if err != nil {
        log.Fatal(err)
    }


然后使用
/tmp/client key.pem
而不是
pathto/client key.pem

您无法实现这一点,文件是不可变的。解决方案是将其复制到
/tmp
目录中

    f, err := os.Open("pathto/client-key.pem")
    if err != nil {
        log.Fatal(err)
    }
    defer f.Close()

    d, err := os.Open("/tmp/client-key.pem")
    if err != nil {
        log.Fatal(err)
    }
    defer d.Close()

    _, err = io.Copy(d, f)
    if err != nil {
        log.Fatal(err)
    }

    err = d.Chmod( 0600)
    if err != nil {
        log.Fatal(err)
    }


然后使用
/tmp/client key.pem
而不是
pathto/client key.pem

不幸的是,此操作是不允许的。它显示错误
chmod pathto/client-key.pem:不允许操作
。除了将文件复制到
/tmp
目录并更改iTunes之外,我找不到任何解决方案。但是,不允许执行此操作。它显示错误
chmod pathto/client-key.pem:不允许操作
。除了将文件复制到
/tmp
目录并对其进行更改之外,我找不到任何解决方案