mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
test: tmpfiles: add tests on conditionalized execute bit
This commit is contained in:
parent
26d98cdd78
commit
f582e61bc3
@ -17,6 +17,8 @@ test_append_files() {
|
||||
|
||||
sed -i "s/systemd//g" "$initdir/etc/nsswitch.conf"
|
||||
fi
|
||||
|
||||
image_install setfacl
|
||||
}
|
||||
|
||||
do_test "$@"
|
||||
|
@ -13,6 +13,7 @@ import subprocess
|
||||
import tempfile
|
||||
import pwd
|
||||
import grp
|
||||
from pathlib import Path
|
||||
|
||||
try:
|
||||
from systemd import id128
|
||||
@ -202,6 +203,27 @@ def test_hard_cleanup(*, user):
|
||||
def test_base64():
|
||||
test_content('f~ {} - - - - UGlmZgpQYWZmClB1ZmYgCg==', "Piff\nPaff\nPuff \n", user=False)
|
||||
|
||||
def test_conditionalized_execute_bit():
|
||||
c = subprocess.run(exe_with_args + ['--version', '|', 'grep', '-F', '+ACL'], shell=True, stdout=subprocess.DEVNULL)
|
||||
if c.returncode != 0:
|
||||
return 0
|
||||
|
||||
d = tempfile.TemporaryDirectory(prefix='test-acl.', dir=temp_dir.name)
|
||||
temp = Path(d.name) / "cond_exec"
|
||||
temp.touch()
|
||||
temp.chmod(0o644)
|
||||
|
||||
test_line(f"a {temp} - - - - u:root:Xwr", user=False, returncode=0)
|
||||
c = subprocess.run(["getfacl", "-Ec", temp],
|
||||
stdout=subprocess.PIPE, check=True, text=True)
|
||||
assert "user:root:rw-" in c.stdout
|
||||
|
||||
temp.chmod(0o755)
|
||||
test_line(f"a+ {temp} - - - - u:root:Xwr,g:root:rX", user=False, returncode=0)
|
||||
c = subprocess.run(["getfacl", "-Ec", temp],
|
||||
stdout=subprocess.PIPE, check=True, text=True)
|
||||
assert "user:root:rwx" in c.stdout and "group:root:r-x" in c.stdout
|
||||
|
||||
if __name__ == '__main__':
|
||||
test_invalids(user=False)
|
||||
test_invalids(user=True)
|
||||
@ -214,3 +236,5 @@ if __name__ == '__main__':
|
||||
test_hard_cleanup(user=True)
|
||||
|
||||
test_base64()
|
||||
|
||||
test_conditionalized_execute_bit()
|
||||
|
36
test/units/testsuite-22.16.sh
Executable file
36
test/units/testsuite-22.16.sh
Executable file
@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#
|
||||
# Test for conditionalized execute bit ('X' bit)
|
||||
set -eux
|
||||
set -o pipefail
|
||||
|
||||
# shellcheck source=test/units/assert.sh
|
||||
. "$(dirname "$0")"/assert.sh
|
||||
|
||||
rm -f /tmp/acl_exec
|
||||
touch /tmp/acl_exec
|
||||
|
||||
# No ACL set yet
|
||||
systemd-tmpfiles --create - <<EOF
|
||||
a /tmp/acl_exec - - - - u:root:rwX
|
||||
EOF
|
||||
assert_in 'user:root:rw-' "$(getfacl -Ec /tmp/acl_exec)"
|
||||
|
||||
# Set another ACL and append
|
||||
setfacl -m g:root:x /tmp/acl_exec
|
||||
|
||||
systemd-tmpfiles --create - <<EOF
|
||||
a+ /tmp/acl_exec - - - - u:root:rwX
|
||||
EOF
|
||||
acl="$(getfacl -Ec /tmp/acl_exec)"
|
||||
assert_in 'user:root:rwx' "$acl"
|
||||
assert_in 'group:root:--x' "$acl"
|
||||
|
||||
# Reset ACL (no append)
|
||||
systemd-tmpfiles --create - <<EOF
|
||||
a /tmp/acl_exec - - - - u:root:rwX
|
||||
EOF
|
||||
assert_in 'user:root:rw-' "$(getfacl -Ec /tmp/acl_exec)"
|
||||
|
||||
rm -f /tmp/acl_exec
|
Loading…
Reference in New Issue
Block a user