On Dec 4, 2015, at 4:11 PM, Theodore Ts'o [off-list ref] wrote:
On Fri, Dec 04, 2015 at 02:45:32PM -0600, Seth Forshee wrote:
quoted
On Fri, Dec 04, 2015 at 02:07:36PM -0600, Serge E. Hallyn wrote:
quoted
Heh, I was looking over http://www.gossamer-threads.com/lists/linux/kernel/103611
a little while ago :) The same question was asked 16 years ago. Apparently
the answer then was that it was easier than fixing the code.
So it seems then that either it still isn't safe and so unprivileged
users shouldn't be allowed to do it at all, or else it's safe and we
should drop the requirement completely. I can't say which is right,
unfortunately.
It may not have been safe 16 years agoo, but giving invalid arguments
to FIBMAP is safe for ext4 and ext2. This is the sort of thing that
tools like trinity should and does test for, so I think it should be
fine to remove the root check for FIBMAP.
You can use FIEMAP on regular files and directories without special permission:
$ filefrag -v /etc
Filesystem type is: ef53
File size of /etc is 12288 (3 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 8396832.. 8396832: 1:
1: 1.. 2: 8397051.. 8397052: 2: 8396833: last,eof
/etc: 2 extents found
FIEMAP also has the benefit that you don't need to call it millions of times
for large files, like is needed for FIBMAP.
Cheers, Andreas