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

From: Bob Proulx <[email-masked]>
Date: Thu, 9 Jun 2011 14:59:06 -0600

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.

Bob