diff options
author | alexlzhu <alexlzhu@devvm2387.atn0.facebook.com> | 2021-07-09 02:10:47 +0200 |
---|---|---|
committer | Chris Down <chris@chrisdown.name> | 2021-09-28 15:52:27 +0200 |
commit | 8c35c10d20ff7b369bfff3fbbb92a43ca2fd5938 (patch) | |
tree | be87626fe62937be49a7b3388d75d44623ed2c5d /test | |
parent | Merge pull request #20837 from bluca/coveralls (diff) | |
download | systemd-8c35c10d20ff7b369bfff3fbbb92a43ca2fd5938.tar.xz systemd-8c35c10d20ff7b369bfff3fbbb92a43ca2fd5938.zip |
core: Add ExecSearchPath parameter to specify the directory relative to which binaries executed by Exec*= should be found
Currently there does not exist a way to specify a path relative to which
all binaries executed by Exec should be found. The only way is to
specify the absolute path.
This change implements the functionality to specify a path relative to which
binaries executed by Exec*= can be found.
Closes #6308
Diffstat (limited to 'test')
12 files changed, 57 insertions, 0 deletions
diff --git a/test/fuzz/fuzz-unit-file/directives.mount b/test/fuzz/fuzz-unit-file/directives.mount index 33c44c79c5..bdb8f95917 100644 --- a/test/fuzz/fuzz-unit-file/directives.mount +++ b/test/fuzz/fuzz-unit-file/directives.mount @@ -5,6 +5,7 @@ AllowedMemoryNodes= AmbientCapabilities= AppArmorProfile= BPFProgram= +ExecSearchPath= BindPaths= BindReadOnlyPaths= BlockIOAccounting= diff --git a/test/fuzz/fuzz-unit-file/directives.service b/test/fuzz/fuzz-unit-file/directives.service index d92d90e118..aeea1d8731 100644 --- a/test/fuzz/fuzz-unit-file/directives.service +++ b/test/fuzz/fuzz-unit-file/directives.service @@ -31,6 +31,7 @@ AssertUser= AssertVirtualization= BPFProgram= Before= +ExecSearchPath= BindTo= BindsTo= CollectMode= diff --git a/test/fuzz/fuzz-unit-file/directives.socket b/test/fuzz/fuzz-unit-file/directives.socket index fa28ff1042..04aeb476f1 100644 --- a/test/fuzz/fuzz-unit-file/directives.socket +++ b/test/fuzz/fuzz-unit-file/directives.socket @@ -7,6 +7,7 @@ AmbientCapabilities= AppArmorProfile= BPFProgram= Backlog= +ExecSearchPath= BindIPv6Only= BindPaths= BindReadOnlyPaths= diff --git a/test/fuzz/fuzz-unit-file/directives.swap b/test/fuzz/fuzz-unit-file/directives.swap index abb3cd54e7..ff54ebfc18 100644 --- a/test/fuzz/fuzz-unit-file/directives.swap +++ b/test/fuzz/fuzz-unit-file/directives.swap @@ -5,6 +5,7 @@ AllowedMemoryNodes= AmbientCapabilities= AppArmorProfile= BPFProgram= +ExecSearchPath= BindPaths= BindReadOnlyPaths= BlockIOAccounting= diff --git a/test/test-execute/exec-execsearchpath-environment-path-set.service b/test/test-execute/exec-execsearchpath-environment-path-set.service new file mode 100644 index 0000000000..dd27de84a8 --- /dev/null +++ b/test/test-execute/exec-execsearchpath-environment-path-set.service @@ -0,0 +1,5 @@ +[Service] +ExecStart=/bin/sh -x -c 'test "$$PATH" = "/usr" && test "$$VAR1" = word3 && test "$$VAR2" = "\\$$word 5 6"' +Type=oneshot +ExecSearchPath=/tmp:/bin +Environment="PATH=/usr" VAR1=word3 "VAR2=$word 5 6" diff --git a/test/test-execute/exec-execsearchpath-environment.service b/test/test-execute/exec-execsearchpath-environment.service new file mode 100644 index 0000000000..ba477fbdcd --- /dev/null +++ b/test/test-execute/exec-execsearchpath-environment.service @@ -0,0 +1,5 @@ +[Service] +ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$PATH" = "/tmp:/bin"' +Type=oneshot +ExecSearchPath=/tmp:/bin +Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6" diff --git a/test/test-execute/exec-execsearchpath-environmentfile-set.service b/test/test-execute/exec-execsearchpath-environmentfile-set.service new file mode 100644 index 0000000000..45877b1d12 --- /dev/null +++ b/test/test-execute/exec-execsearchpath-environmentfile-set.service @@ -0,0 +1,8 @@ +[Unit] +Description=Test for ExecSearchPath with EnvironmentFile where EnvironmentFile sets PATH + +[Service] +ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline" && test "$$VAR5" = passwordwithbackslashes && test "$$PATH" = /usr' +Type=oneshot +EnvironmentFile=/tmp/test-exec_execsearchpath_environmentfile-set.conf +ExecSearchPath=/tmp:/bin diff --git a/test/test-execute/exec-execsearchpath-environmentfile.service b/test/test-execute/exec-execsearchpath-environmentfile.service new file mode 100644 index 0000000000..65a04e7dbe --- /dev/null +++ b/test/test-execute/exec-execsearchpath-environmentfile.service @@ -0,0 +1,8 @@ +[Unit] +Description=Test for ExecSearchPath with EnvironmentFile where EnvironmentFile does not set PATH + +[Service] +ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline" && test "$$VAR5" = passwordwithbackslashes && test "$$PATH" = "/tmp:/bin"' +Type=oneshot +ExecSearchPath=/tmp:/bin +EnvironmentFile=/tmp/test-exec_execsearchpath_environmentfile.conf diff --git a/test/test-execute/exec-execsearchpath-passenvironment-set.service b/test/test-execute/exec-execsearchpath-passenvironment-set.service new file mode 100644 index 0000000000..62c7742b10 --- /dev/null +++ b/test/test-execute/exec-execsearchpath-passenvironment-set.service @@ -0,0 +1,8 @@ +[Unit] +Description=Test for PassEnvironment with ExecSearchPath with PATH set by user + +[Service] +ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline" && test "$$VAR5" = passwordwithbackslashes && test "$$PATH" = "/usr"' +Type=oneshot +PassEnvironment=VAR1 VAR2 VAR3 VAR4 VAR5 PATH +ExecSearchPath=/tmp:/bin diff --git a/test/test-execute/exec-execsearchpath-passenvironment.service b/test/test-execute/exec-execsearchpath-passenvironment.service new file mode 100644 index 0000000000..83eb0d680a --- /dev/null +++ b/test/test-execute/exec-execsearchpath-passenvironment.service @@ -0,0 +1,8 @@ +[Unit] +Description=Test for PassEnvironment with ExecSearchPath with PATH not set by user + +[Service] +ExecStart=/bin/sh -x -c 'test "$$VAR1" = "word1 word2" && test "$$VAR2" = word3 && test "$$VAR3" = "\\$$word 5 6" && test "$$VAR4" = "new\nline" && test "$$VAR5" = passwordwithbackslashes && test "$$PATH" = "/tmp:/bin"' +Type=oneshot +PassEnvironment=VAR1 VAR2 VAR3 VAR4 VAR5 +ExecSearchPath=/tmp:/bin diff --git a/test/test-execute/exec-execsearchpath-unit-specifier.service b/test/test-execute/exec-execsearchpath-unit-specifier.service new file mode 100644 index 0000000000..740bab1d41 --- /dev/null +++ b/test/test-execute/exec-execsearchpath-unit-specifier.service @@ -0,0 +1,7 @@ +[Unit] +Description=Test for specifiers with exec search path + +[Service] +Type=oneshot +ExecSearchPath=/tmp:/bin:/usr/bin:%V +ExecStart=/bin/sh -x -c 'test %V = /var/tmp && test "$$PATH" = "/tmp:/bin:/usr/bin:/var/tmp"' diff --git a/test/test-execute/exec-execsearchpath.service b/test/test-execute/exec-execsearchpath.service new file mode 100644 index 0000000000..67b71709f3 --- /dev/null +++ b/test/test-execute/exec-execsearchpath.service @@ -0,0 +1,4 @@ +[Service] +ExecStart=ls_temp +Type=oneshot +ExecSearchPath=/tmp/test-exec_execsearchpath |