GNU bug report logs -
#11427
cp 8.16 not writing through, writing over
Previous Next
Reported by: karl <at> freefriends.org (Karl Berry)
Date: Mon, 7 May 2012 13:22:02 UTC
Severity: normal
Tags: notabug
Done: Jim Meyering <jim <at> meyering.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Karl Berry wrote:
> Create dangling symlink:
> $ ln -s foo bar
>
> Attempt to write over it with cp:
> $ \cp -i /etc/issue bar
> cp: not writing through dangling symlink 'bar'
>
> In the past, it would ask me if I wanted to replace bar. (As desired.)
Hi Karl,
When I try that in an empty directory and using coreutils-6.7's cp
(which predates the change mentioned below), it does this:
$ ln -s foo bar
$ env cp -i /etc/issue bar :
cp: cannot create regular file `bar': File exists
Maybe you want to use --backup?
> The error message makes me think that it is thinking I am writing
> "through" a dangling symlink to a directory. But that gets
> a different error message, which seems fine:
> $ \cp -i /etc/issue bar/baz
> cp: cannot create regular file 'bar/baz': No such file or directory
>
> coreutils 8.16, compiled from original source on CentOS 5.8 (libc 2.5,
> it seems).
[quick answer: set POSIXLY_CORRECT]
That behavior change dates back to 2007.
Here's the NEWS snippet:
* Noteworthy changes in release 6.9.90 (2007-12-01) [beta]
...
** Changes in behavior
cp, by default, refuses to copy through a dangling destination symlink
Set POSIXLY_CORRECT if you require the old, risk-prone behavior.
There's more detail here:
http://git.sv.gnu.org/cgit/coreutils.git/commit/?id=2bdc48121916ab0d7bb7d
and even more on the mailing list just before I made that change.
This bug report was last modified 13 years and 12 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.