Andy Lutomirski bb2314b479 fs: Allow unprivileged linkat(..., AT_EMPTY_PATH) aka flink
Every now and then someone proposes a new flink syscall, and this spawns
a long discussion of whether it would be a security problem.  I think
that this is missing the point: flink is *already* allowed without
privilege as long as /proc is mounted -- it's called AT_SYMLINK_FOLLOW.

Now that O_TMPFILE is here, the ability to create a file with O_TMPFILE,
write it, and link it in is very convenient.  The only problem is that
it requires that /proc be mounted so that you can do:

linkat(AT_FDCWD, "/proc/self/fd/<tmpfd>", dfd, path, AT_SYMLINK_NOFOLLOW)

This sucks -- it's much nicer to do:

linkat(tmpfd, "", dfd, path, AT_EMPTY_PATH)

Let's allow it.

If this turns out to be excessively scary, it we could instead require
that the inode in question be I_LINKABLE, but this seems pointless given
the /proc situation

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2013-08-05 18:24:11 +04:00
..
2013-07-05 18:59:33 +04:00
2013-06-29 12:56:55 +04:00
2013-06-29 12:56:33 +04:00
2013-07-05 18:59:33 +04:00
2013-06-29 12:56:46 +04:00
2013-06-26 11:38:02 -05:00
2013-06-29 12:56:31 +04:00
2013-06-29 12:57:05 +04:00
2013-07-08 13:35:48 +04:00
2013-07-09 10:33:25 -07:00
2013-06-29 12:56:53 +04:00
2013-07-17 14:53:54 +02:00
2013-06-29 12:56:59 +04:00
2013-06-29 12:56:47 +04:00
2013-07-11 10:19:34 -07:00
2013-07-05 18:59:33 +04:00
2013-06-29 12:56:37 +04:00
2013-06-29 12:56:32 +04:00
2013-07-18 13:40:18 +02:00
2013-06-29 12:56:38 +04:00
2013-06-29 12:56:39 +04:00
2013-08-05 17:37:37 +04:00
2013-06-29 12:56:29 +04:00
2013-06-29 12:56:28 +04:00
2013-06-29 12:57:12 +04:00
2013-07-25 10:41:42 -05:00
2013-07-03 16:08:06 -07:00
2013-06-29 12:57:04 +04:00
2013-07-10 18:11:34 -07:00
2013-07-10 18:11:34 -07:00
2013-04-29 15:40:23 -04:00
2013-06-29 12:57:05 +04:00
2013-03-03 23:00:23 -05:00
2013-02-22 23:31:31 -05:00
2013-06-29 12:57:34 +04:00
2013-02-22 23:31:31 -05:00
2013-04-17 13:25:09 +01:00
2013-08-05 18:24:10 +04:00
2013-05-07 20:16:25 -07:00
2013-05-31 15:16:33 -04:00
2013-06-29 12:57:05 +04:00
2013-02-26 02:46:08 -05:00
2013-07-20 04:58:58 +04:00
2013-05-29 12:57:34 -07:00