Subject: Re: bug#8831: [Ubuntu10.10] Impossible to create an hardlink without write access

From: Sven Joachim <[email-masked]>
Date: Thu, 09 Jun 2011 23:23:35 +0200

On 2011-06-09 22:59 +0200, Bob Proulx wrote:

> Johan Oudinet wrote:
>> GNU coreutils 8.5
>> Ubuntu 10.10 32bits Ext4
>>
>> $ sudo touch f; ln f g
>> ln: creating hard link `g' => `f': Operation not permitted
>
> Thank you for the bug report.  However I am unable to recreate this
> problem using 8.5 on my Debian system using ext3.
>
>   $ sudo touch f
>   $ ln f g
>   $ ls -ldog f g
>   -rw-r--r-- 2 0 Jun  9 14:55 f
>   -rw-r--r-- 2 0 Jun  9 14:55 g
>
> Perhaps this is a problem with ext4?  Can you run your test using
> strace so that we can see what the system is saying?  Something like
> this following command.
>
>   $ strace -e trace=file -o /tmp/ln.strace.out ln f g
>
> On my system I see this output:
>
>   ...
>   stat("g", 0x7fffa6430f10)               = -1 ENOENT (No such file or directory)
>   lstat("f", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
>   linkat(AT_FDCWD, "f", AT_FDCWD, "g", 0) = 0
>
>> However, the following commands work:
>> $ sudo touch f2; sudo chmod a+w f2; ln f2 g
>> 
>> The first call to ln should be permitted too.
>
> As far as I can tell it is permitted.  If it isn't then it would be a
> kernel limitation.

This is indeed due to an Ubuntu kernel patch that is present since
10.10.  The rationale is given in
https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#Hardlink%20Protection.
I'm taking the liberty to close the bug.

Cheers,
       Sven