小编Hor*_*rus的帖子

unshare 如何在没有真正 root 的情况下使用 chroot?

chroot需要CAP_SYS_CHROOT按照说明书进行。该unshare命令使用 chroot

该命令unshare -UrR newroot/无需运行即可工作root,这是有道理的,因为该-r标志使我们root位于名称空间内,从而为我们提供了CAP_SYS_CHROOT功能。

问题开始时unshare -UR newroot/不需要运行为root,而unshare -U chroot newroot/会给我Operation not permitted错误。因此,在第一个中,我不要求位于root用户名称空间内,第二个是相同的,但尝试手动执行。

检查代码,使用时发生的唯一一件事-R是将newrootto设置为optarg,所以我无法理解为什么在一个示例中它有效,而在另一个示例中却无效。

linux chroot linux-capabilities linux-namespaces

6
推荐指数
1
解决办法
2913
查看次数

如何在 Terraform 文件中使用 terragrunt.hcl 中定义的本地变量?

我创建了这个文件夹结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 terragrunt.hcl\n
Run Code Online (Sandbox Code Playgroud)\n
# FILE: terragrunt.hcl\n\ninclude {\n  path = find_in_parent_folders()\n}\n\nlocals {\n  common_vars = read_terragrunt_config(find_in_parent_folders("common.hcl"))\n  cluster_name = local.common_vars.locals.cluster_name\n}\n\nterraform {\n  source = "./main.tf"\n}\n
Run Code Online (Sandbox Code Playgroud)\n
# FILE: main.tf\n\nmodule "tags" {\n  source = "..."\n\n  eks_cluster_names = [local.cluster_name]\n}\n\nmodule "vpc" {\n  source = "..."\n\n  aws_region = local.common_vars.locals.aws_region\n  \n  ...\n\n  vpc_custom_tags = module.tags.vpc_eks_tags\n  \n  ...\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但对于local.我尝试使用的每一个,我都会收到一个错误:

\n
A local value with the name "blabla" has not been declared\n
Run Code Online (Sandbox Code Playgroud)\n

所以现在我正在尝试找出一种方法来实现这项工作。我考虑遵循how-to-access-terragrunt-variables-in-terraform-code,但我不想创建一个variables.tf. 另外,另一个问题是我必须重新定义 中模块的所有输出main.tf,是否有更好的方法来做到这一点?

\n

是否有一个我可以遵循的良好实践结构?我怎样才能将这些当地人“传播”terragrunt.hcl …

terraform terragrunt

5
推荐指数
1
解决办法
6367
查看次数

函数返回后是否延迟运行?

我一直盯着这段代码,但无法弄清楚其行为的原因。

package main

import (
    "fmt"
)

var i int

func example() int {
    defer func() {
        fmt.Println("defer")
        i = 1
    }()

    fmt.Println("first")
    return i
}

func main() {
    fmt.Println(example())
    fmt.Println(i)
}
Run Code Online (Sandbox Code Playgroud)

首先,我的预期输出是:

first
defer
1
1
Run Code Online (Sandbox Code Playgroud)

但是,正如您在操场上看到的,实际输出是:

first
defer
0
1
Run Code Online (Sandbox Code Playgroud)

这是延迟匿名函数行为吗?没有

那么,为什么要打印呢0

go

2
推荐指数
1
解决办法
638
查看次数