mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-12 09:46:25 +08:00
9fa8b9de3e
When a directory already exists (or after a container is restarted) the perms of the directory being mounted to were being used even when a different permission is set on the tmpfs mount options. This prepends the original directory perms to the mount options. If the perms were already set in the mount opts then those perms will win. This eliminates the need to perform a chmod after mount entirely. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
113 lines
2.5 KiB
Bash
113 lines
2.5 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
function setup() {
|
|
setup_busybox
|
|
update_config '.process.args = ["/bin/echo", "Hello World"]'
|
|
}
|
|
|
|
function teardown() {
|
|
teardown_bundle
|
|
}
|
|
|
|
@test "runc run" {
|
|
runc run test_hello
|
|
[ "$status" -eq 0 ]
|
|
|
|
runc state test_hello
|
|
[ "$status" -ne 0 ]
|
|
}
|
|
|
|
@test "runc run --keep" {
|
|
runc run --keep test_run_keep
|
|
[ "$status" -eq 0 ]
|
|
|
|
testcontainer test_run_keep stopped
|
|
|
|
runc state test_run_keep
|
|
[ "$status" -eq 0 ]
|
|
|
|
runc delete test_run_keep
|
|
|
|
runc state test_run_keep
|
|
[ "$status" -ne 0 ]
|
|
}
|
|
|
|
@test "runc run --keep (check cgroup exists)" {
|
|
# for systemd driver, the unit's cgroup path will be auto removed if container's all processes exited
|
|
requires no_systemd
|
|
[ $EUID -ne 0 ] && requires rootless_cgroup
|
|
|
|
set_cgroups_path
|
|
|
|
runc run --keep test_run_keep
|
|
[ "$status" -eq 0 ]
|
|
|
|
testcontainer test_run_keep stopped
|
|
|
|
runc state test_run_keep
|
|
[ "$status" -eq 0 ]
|
|
|
|
# check that cgroup exists
|
|
check_cgroup_value "pids.max" "max"
|
|
|
|
runc delete test_run_keep
|
|
|
|
runc state test_run_keep
|
|
[ "$status" -ne 0 ]
|
|
}
|
|
|
|
@test "runc run [hostname domainname]" {
|
|
update_config ' .process.args |= ["sh"]
|
|
| .hostname = "myhostname"
|
|
| .domainname= "mydomainname"'
|
|
|
|
runc run -d --console-socket "$CONSOLE_SOCKET" test_utc
|
|
[ "$status" -eq 0 ]
|
|
|
|
# test hostname
|
|
runc exec test_utc hostname
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == *'myhostname'* ]]
|
|
|
|
# test domainname
|
|
runc exec test_utc cat /proc/sys/kernel/domainname
|
|
[ "$status" -eq 0 ]
|
|
[[ "${lines[0]}" == *'mydomainname'* ]]
|
|
}
|
|
|
|
@test "runc run with tmpfs perms" {
|
|
# shellcheck disable=SC2016
|
|
update_config '.process.args = ["sh", "-c", "stat -c %a /tmp/test"]'
|
|
update_config '.mounts += [{"destination": "/tmp/test", "type": "tmpfs", "source": "tmpfs", "options": ["mode=0444"]}]'
|
|
|
|
# Directory is to be created by runc.
|
|
runc run test_tmpfs
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "444" ]
|
|
|
|
# Run a 2nd time with the pre-existing directory.
|
|
# Ref: https://github.com/opencontainers/runc/issues/3911
|
|
runc run test_tmpfs
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "444" ]
|
|
|
|
# Existing directory, custom perms, no mode on the mount,
|
|
# so it should use the directory's perms.
|
|
update_config '.mounts[-1].options = []'
|
|
chmod 0710 rootfs/tmp/test
|
|
# shellcheck disable=SC2016
|
|
runc run test_tmpfs
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "710" ]
|
|
|
|
# Add back the mode on the mount, and it should use that instead.
|
|
# Just for fun, use different perms than was used earlier.
|
|
# shellcheck disable=SC2016
|
|
update_config '.mounts[-1].options = ["mode=0410"]'
|
|
runc run test_tmpfs
|
|
[ "$status" -eq 0 ]
|
|
[ "$output" = "410" ]
|
|
}
|