←back to thread

Against /tmp

(dotat.at)
257 points todsacerdoti | 2 comments | | HN request time: 0.49s | source
Show context
scottlamb ◴[] No.41915221[source]
> There should be per-user temporary directories. In fact, on modern systems there are per-user temporary directories!

On Linux+systemd, I think this is referring to /run/user/$UID. $XDG_RUNTIME_DIR is set to this path in a session by default. There's a spec for that environment variable at <https://specifications.freedesktop.org/basedir-spec/latest/>. I assume there's also some systemd doc talking about this.

On macOS, I see that $TMPDIR points to a path like /var/folders/jd/d94zfh8d1p3bv_q56wmlxn6w0000gq/T/ that appears to be per-user also.

What do FreeBSD/OpenBSD/NetBSD do?

replies(4): >>41916623 #>>41918825 #>>41918913 #>>41919219 #
cryptonector ◴[] No.41916623[source]
Unfortunately /run/user/$UID/ is NOT universally available.

On Linux it's typically created by a PAM, so if you're not using PAM then it doesn't exist. This means that on Kubernetes pods/containers... it doesn't exist!

Yes, /tmp/ is a security nightmare on multi-user systems, but those are a rarity nowadays.

Lots of things want to write things into /tmp, like Kerberos, but not only. I recently implemented a token file-based cache for JWT that... is a lot like a Kerberos ticket cache. I needed it because the tokens all have specific aud (audience) values. Now where to keep that cache?? The only reasonable place turned out to be /tmp/ precisely because /run/user/$UID/ is not universally available, not even on Linux.

replies(2): >>41918393 #>>41918782 #
zokier ◴[] No.41918393[source]
Does k8s guarantee that /tmp is available either?
replies(1): >>41919150 #
1. cryptonector ◴[] No.41919150[source]
Well, I suppose that depends on the images you choose to run, and how you choose to build them, but I've never seen one that didn't have a /tmp. Have you?
replies(1): >>41922098 #
2. zokier ◴[] No.41922098[source]
Sure, all `FROM scratch` images for starters