summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-11-13 12:06:58 +0100
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-11-13 22:04:38 +0100
commit3f5ac3038e53e15cea36d89261f97018af4dd163 (patch)
tree7027736bf75e0a3b81f6a16af75884e95c30c414
parenta6c57e74c527dcfc60edecec029146d961b4cdb3 (diff)
downloadsystemd-3f5ac3038e53e15cea36d89261f97018af4dd163.tar.gz
systemd-3f5ac3038e53e15cea36d89261f97018af4dd163.tar.bz2
systemd-3f5ac3038e53e15cea36d89261f97018af4dd163.zip
cryptsetup-generator: allow overriding /run/systemd/cryptsetup with $RUNTIME_DIRECTORY
I added a fairly vague entry to docs/ENVIRONMENT because I think it is worth mentioning there (in case someone is looking for any environment variable that might be relevant).
-rw-r--r--docs/ENVIRONMENT.md4
-rw-r--r--src/cryptsetup/cryptsetup-generator.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/docs/ENVIRONMENT.md b/docs/ENVIRONMENT.md
index 0d3f575e6d..5ad18c9e97 100644
--- a/docs/ENVIRONMENT.md
+++ b/docs/ENVIRONMENT.md
@@ -64,6 +64,10 @@ All tools:
this only controls use of Unicode emoji glyphs, and has no effect on other
Unicode glyphs.
+* `$RUNTIME_DIRECTORY` — various tools use this variable to locate the
+ appropriate path under /run. This variable is also set by the manager when
+ RuntimeDirectory= is used, see systemd.exec(5).
+
systemctl:
* `$SYSTEMCTL_FORCE_BUS=1` — if set, do not connect to PID1's private D-Bus
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index a4977ffa4d..4bfcba8f0f 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -38,6 +38,7 @@ static const char *arg_dest = NULL;
static bool arg_enabled = true;
static bool arg_read_crypttab = true;
static const char *arg_crypttab = NULL;
+static const char *arg_runtime_directory = NULL;
static bool arg_whitelist = false;
static Hashmap *arg_disks = NULL;
static char *arg_default_options = NULL;
@@ -90,11 +91,11 @@ static int generate_keydev_mount(const char *name, const char *keydev, const cha
assert(unit);
assert(mount);
- r = mkdir_parents("/run/systemd/cryptsetup", 0755);
+ r = mkdir_parents(arg_runtime_directory, 0755);
if (r < 0)
return r;
- r = mkdir("/run/systemd/cryptsetup", 0700);
+ r = mkdir(arg_runtime_directory, 0700);
if (r < 0 && errno != EEXIST)
return -errno;
@@ -102,7 +103,7 @@ static int generate_keydev_mount(const char *name, const char *keydev, const cha
if (!name_escaped)
return -ENOMEM;
- where = strjoin("/run/systemd/cryptsetup/keydev-", name_escaped);
+ where = strjoin(arg_runtime_directory, "/keydev-", name_escaped);
if (!where)
return -ENOMEM;
@@ -670,6 +671,7 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
assert_se(arg_dest = dest);
arg_crypttab = getenv("SYSTEMD_CRYPTTAB") ?: "/etc/crypttab";
+ arg_runtime_directory = getenv("RUNTIME_DIRECTORY") ?: "/run/systemd/cryptsetup";
arg_disks = hashmap_new(&crypt_device_hash_ops);
if (!arg_disks)