Hello.
During package update of kbd i got a build error
cp: failed to preserve ownership for /tmp/.pkgmk/pkg/usr/share/kbd/keymaps/i386/qwertz/sr-latin.map.gz: Operation not supported
This ended up as (kbd 2.9.0: build error (under fakeroot(1)
environment))[1] which was fixed like [2] (-dPR instead of -a).
However we went over
|>|cp -a is used in the makefile. The -a means no dereference and preserve
|>|links and other attributes. This should not be a problem if you have
|>|the same user.
|>
|> GNU coreutils 9.7 cp(1) is of a different opinion:
|>
|> $ touch xa
|> $ ln -s xa xb
|> $ cp -a xb xc
|> cp: failed to preserve ownership for xc: Operation not supported
|
|No. This is security settings on your system.
|
|On my laptop:
|
|$ touch xa
|$ ln -s xa xb
|$ cp -a xb xc
and so i came to
This is really strange; i have no "security setting", actually,
only the fs.protected_* sysctls are set.
I get the failure in the "sticky" /tmp/ as well as as myself in my
home directory. Looking at coreutils cp.c the error comes from
if (x->preserve_ownership)
{
if (lchownat (dst_dirfd, relname, p->st.st_uid, p->st.st_gid)
!= 0)
...
error (0, errno, _("failed to preserve ownership for %s"),
quoteaf (dst_name));
Here there is no lchownat(3/2), and if i do (copied from manual
and made runnable)
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
int main(void){
struct passwd *pwd;
struct group *grp;
int x;
pwd = getpwnam("steffen");
grp = getgrnam("steffen");
x = lchown("xb", pwd->pw_uid, grp->gr_gid);
fprintf(stderr, "x=%d errno=%s\n", x, strerror(errno));
return 0;
}
i get
#?148|kent:x$ fakeroot tcc -run t.c
x=0 errno=Success
#?0|kent:x$ tcc -run t.c
x=0 errno=Success
wherever i try, and so it seems to me the GNU coreutils
lib/fchownat.c fallback implementation of lchownat() is bogus
thus??
And so i am here to report that?.
[1] https://lore.kernel.org/kbd/20250910123724.s2uU6eVo@steffen%25sdaoden.eu/T/#m80238c1410528dc960f54dad20a126fa5ecdb059
[2] https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git/commit/?id=db82eb6f86e6c0b8ac4260e88b88d66e1cd7c077
Ciao,
--steffen
|
|Der Kragenbaer, The moon bear,
|der holt sich munter he cheerfully and one by one
|einen nach dem anderen runter wa.ks himself off
|(By Robert Gernhardt)