diff options
author | Joost Heitbrink <joostheitbrink@outlook.com> | 2022-09-21 20:11:44 +0200 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-09-22 01:12:08 +0200 |
commit | 780c8055378589e5a7d419789761c35d05295291 (patch) | |
tree | 34805004efba72d8e68bba2323262e89b34a0638 | |
parent | man: don't mention Socket files in Scope man page (diff) | |
download | systemd-780c8055378589e5a7d419789761c35d05295291.tar.xz systemd-780c8055378589e5a7d419789761c35d05295291.zip |
systemd-run: refuse --working-directory option with --scope
systemd-run's man page says the following about the working directory of
the process:
"If a command is run as transient scope unit, it will be executed
by systemd-run itself as parent process and will thus inherit the
execution environment of the caller."
This means working directory assignment does not work, as evidenced by
the following invocation:
```bash
$ systemd-run --scope --property=WorkingDirectory=/tmp/ bash -c 'echo $(pwd)'
Unknown assignment: WorkingDirectory=/tmp/
```
However, using the shorthand switch --working-directory silently ignores
this instead of giving a similar error.
```bash
systemd-run --scope --user --working-directory=/tmp/ bash -c 'echo $(pwd)'
Running scope as unit: run-r19cc32e744e64285814dbf2204637a2b.scope
/home/test/projects/systemd
```
This commit fixes this by explicitly generating an error instead of
silently ignoring the switch:
```bash
$ systemd-run --scope --working-directory=/tmp/ bash -c 'echo $(pwd)'
--working-directory is not supported in --scope mode.
```
Diffstat (limited to '')
-rw-r--r-- | src/run/run.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/run/run.c b/src/run/run.c index e2915fe4de..741f7b279f 100644 --- a/src/run/run.c +++ b/src/run/run.c @@ -593,6 +593,10 @@ static int parse_argv(int argc, char *argv[]) { return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--remain-after-exit and --service-type= are not supported in --scope mode."); + if (arg_scope && arg_working_directory) + return log_error_errno(SYNTHETIC_ERRNO(EINVAL), + "--working-directory is not supported in --scope mode."); + if (arg_stdio != ARG_STDIO_NONE && (with_trigger || arg_scope)) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--pty/--pipe is not compatible in timer or --scope mode."); |