diff --git a/TODO b/TODO index cb1296950e..ca39210f10 100644 --- a/TODO +++ b/TODO @@ -78,8 +78,6 @@ * in the PAM module rely on loginuid to figure out XDG_RUNTIME_DIR -* tmpfiles: skip sticky files and after wallclock time change - Pre v12: * fsck-root.service/start gets queued twice diff --git a/src/tmpfiles.c b/src/tmpfiles.c index 1ad5a01eab..120236c5cc 100644 --- a/src/tmpfiles.c +++ b/src/tmpfiles.c @@ -182,6 +182,13 @@ static int dir_cleanup( } } else { + /* Skip files for which the sticky bit is + * set. These are semantics we define, and are + * unknown elsewhere. See XDG_RUNTIME_DIR + * specification for details. */ + if (s.st_mode & S_ISVTX) + continue; + if (mountpoint) { if (streq(dent->d_name, ".journal") && s.st_uid == 0)