podman

Форк
0
/
oci_conmon_exec_linux.go 
41 строка · 1.3 Кб
1
//go:build !remote
2

3
package libpod
4

5
import (
6
	"github.com/containers/common/pkg/capabilities"
7
	"github.com/moby/sys/user"
8
	spec "github.com/opencontainers/runtime-spec/specs-go"
9
)
10

11
func (c *Container) setProcessCapabilitiesExec(options *ExecOptions, user string, execUser *user.ExecUser, pspec *spec.Process) error {
12
	ctrSpec, err := c.specFromState()
13
	if err != nil {
14
		return err
15
	}
16

17
	allCaps, err := capabilities.BoundingSet()
18
	if err != nil {
19
		return err
20
	}
21
	if options.Privileged {
22
		pspec.Capabilities.Bounding = allCaps
23
	} else {
24
		pspec.Capabilities.Bounding = ctrSpec.Process.Capabilities.Bounding
25
	}
26

27
	// Always unset the inheritable capabilities similarly to what the Linux kernel does
28
	// They are used only when using capabilities with uid != 0.
29
	pspec.Capabilities.Inheritable = []string{}
30

31
	if execUser.Uid == 0 {
32
		pspec.Capabilities.Effective = pspec.Capabilities.Bounding
33
		pspec.Capabilities.Permitted = pspec.Capabilities.Bounding
34
	} else if user == c.config.User {
35
		pspec.Capabilities.Effective = ctrSpec.Process.Capabilities.Effective
36
		pspec.Capabilities.Inheritable = ctrSpec.Process.Capabilities.Effective
37
		pspec.Capabilities.Permitted = ctrSpec.Process.Capabilities.Effective
38
		pspec.Capabilities.Ambient = ctrSpec.Process.Capabilities.Effective
39
	}
40
	return nil
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.