> If we can't figure it out from her replies to our *many* requests for > additional information, then my next request would be to strace it, > and see exactly which system call is failing.
$ LANG=C strace cp -p test.sh /tmp execve("/usr/bin/cp", ["cp", "-p", "test.sh", "/tmp"], 0x7ffe58e09538 /* 33 vars */) = 0 brk(NULL) = 0x561646694000 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2776e92000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=251839, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 251839, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2776e54000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=182504, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 190160, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2776e25000 mmap(0x7f2776e2c000, 114688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f2776e2c000 mmap(0x7f2776e48000, 32768, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x23000) = 0x7f2776e48000 mmap(0x7f2776e50000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2b000) = 0x7f2776e50000 mmap(0x7f2776e52000, 5840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2776e52000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libacl.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=38832, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 41008, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2776e1a000 mmap(0x7f2776e1c000, 20480, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2776e1c000 mmap(0x7f2776e21000, 8192, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f2776e21000 mmap(0x7f2776e23000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f2776e23000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libattr.so.1", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=26544, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 28696, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2776e12000 mmap(0x7f2776e14000, 12288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2776e14000 mmap(0x7f2776e17000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f2776e17000 mmap(0x7f2776e18000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f2776e18000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P~\2\0\0\0\0\0"..., 832) = 832 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 newfstatat(3, "", {st_mode=S_IFREG|0755, st_size=1933688, ...}, AT_EMPTY_PATH) = 0 pread64(3, "\6\0\0\0\4\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0@\0\0\0\0\0\0\0"..., 784, 64) = 784 mmap(NULL, 1985936, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2776c2d000 mmap(0x7f2776c53000, 1404928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f2776c53000 mmap(0x7f2776daa000, 348160, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17d000) = 0x7f2776daa000 mmap(0x7f2776dff000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d1000) = 0x7f2776dff000 mmap(0x7f2776e05000, 52624, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2776e05000 close(3) = 0 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libpcre2-8.so.0", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832 newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=633480, ...}, AT_EMPTY_PATH) = 0 mmap(NULL, 631688, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2776b92000 mmap(0x7f2776b94000, 442368, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f2776b94000 mmap(0x7f2776c00000, 176128, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6e000) = 0x7f2776c00000 mmap(0x7f2776c2b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x99000) = 0x7f2776c2b000 close(3) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2776b90000 arch_prctl(ARCH_SET_FS, 0x7f2776b91540) = 0 set_tid_address(0x7f2776b91810) = 195619 set_robust_list(0x7f2776b91820, 24) = 0 rseq(0x7f2776b91e60, 0x20, 0, 0x53053053) = 0 mprotect(0x7f2776dff000, 16384, PROT_READ) = 0 mprotect(0x7f2776c2b000, 4096, PROT_READ) = 0 mprotect(0x7f2776e18000, 4096, PROT_READ) = 0 mprotect(0x7f2776e23000, 4096, PROT_READ) = 0 mprotect(0x7f2776e50000, 4096, PROT_READ) = 0 mprotect(0x561616c18000, 4096, PROT_READ) = 0 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2776b8e000 mprotect(0x7f2776eca000, 8192, PROT_READ) = 0 prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0 munmap(0x7f2776e54000, 251839) = 0 statfs("/sys/fs/selinux", 0x7fffbb4e2da0) = -1 ENOENT (No such file or directory) statfs("/selinux", 0x7fffbb4e2da0) = -1 ENOENT (No such file or directory) getrandom("\x62\x43\x33\x60\xb7\x6c\xd7\x9a", 8, GRND_NONBLOCK) = 8 brk(NULL) = 0x561646694000 brk(0x5616466b5000) = 0x5616466b5000 openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3 newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0 read(3, "nodev\tsysfs\nnodev\ttmpfs\nnodev\tbd"..., 1024) = 414 read(3, "", 1024) = 0 close(3) = 0 access("/etc/selinux/config", F_OK) = -1 ENOENT (No such file or directory) geteuid() = 1517 openat(AT_FDCWD, "/tmp", O_RDONLY|O_PATH|O_DIRECTORY) = 3 newfstatat(AT_FDCWD, "test.sh", {st_mode=S_IFREG|0750, st_size=300, ...}, 0) = 0 newfstatat(3, "test.sh", {st_mode=S_IFREG|0750, st_size=300, ...}, 0) = 0 openat(AT_FDCWD, "test.sh", O_RDONLY) = 4 newfstatat(4, "", {st_mode=S_IFREG|0750, st_size=300, ...}, AT_EMPTY_PATH) = 0 openat(3, "test.sh", O_WRONLY|O_TRUNC) = 5 ioctl(5, BTRFS_IOC_CLONE or FICLONE, 4) = -1 EXDEV (Invalid cross-device link) newfstatat(5, "", {st_mode=S_IFREG|0750, st_size=0, ...}, AT_EMPTY_PATH) = 0 fadvise64(4, 0, 0, POSIX_FADV_SEQUENTIAL) = 0 uname({sysname="Linux", nodename="XXXXXXXXXX", ...}) = 0 copy_file_range(4, NULL, 5, NULL, 9223372035781033984, 0) = -1 EXDEV (Invalid cross-device link) mmap(NULL, 1056768, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2776a8c000 read(4, "#!/usr/bin/sh\n\nexport LANG=C\nls "..., 1048576) = 300 write(5, "#!/usr/bin/sh\n\nexport LANG=C\nls "..., 300) = 300 read(4, "", 1048576) = 0 utimensat(5, NULL, [{tv_sec=1720514858, tv_nsec=250366226} /* 2024-07-09T10:47:38.250366226+0200 */, {tv_sec=1720514761, tv_nsec=246516944} /* 2024-07-09T10:46:01.246516944+0200 */], 0) = 0 fchmod(5, 0100750) = 0 flistxattr(4, NULL, 0) = 16 flistxattr(4, "system.nfs4_acl\0", 16) = 16 openat(AT_FDCWD, "/etc/xattr.conf", O_RDONLY) = 6 newfstatat(6, "", {st_mode=S_IFREG|0644, st_size=681, ...}, AT_EMPTY_PATH) = 0 read(6, "# /etc/xattr.conf\n#\n# Format:\n# "..., 4096) = 681 read(6, "", 4096) = 0 close(6) = 0 fgetxattr(4, "system.nfs4_acl", NULL, 0) = 80 fgetxattr(4, "system.nfs4_acl", "\0\0\0\3\0\0\0\0\0\0\0\0\0\26\1\247\0\0\0\6OWNER@\0\0\0\0\0", 80) = 80 fsetxattr(5, "system.nfs4_acl", "\0\0\0\3\0\0\0\0\0\0\0\0\0\26\1\247\0\0\0\6OWNER@\0\0\0\0\0", 80, 0) = -1 EOPNOTSUPP (Operation not supported) write(2, "cp: ", 4cp: ) = 4 write(2, "preserving permissions for '/tmp"..., 41preserving permissions for '/tmp/test.sh') = 41 write(2, ": Operation not supported", 25: Operation not supported) = 25 write(2, "\n", 1 ) = 1 close(5) = 0 close(4) = 0 munmap(0x7f2776a8c000, 1056768) = 0 lseek(0, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) close(0) = 0 close(1) = 0 close(2) = 0 exit_group(1) = ? +++ exited with 1 +++ $ cat /etc/xattr.conf # /etc/xattr.conf # # Format: # <pattern> <action> # # Actions: # permissions - copy when trying to preserve permissions. # skip - do not copy. system.nfs4_acl permissions system.nfs4acl permissions system.posix_acl_access permissions system.posix_acl_default permissions trusted.SGI_ACL_DEFAULT skip # xfs specific trusted.SGI_ACL_FILE skip # xfs specific trusted.SGI_CAP_FILE skip # xfs specific trusted.SGI_DMI_* skip # xfs specific trusted.SGI_MAC_FILE skip # xfs specific xfsroot.* skip # xfs specific; obsolete user.Beagle.* skip # ignore Beagle index data security.evm skip # may only be written by kernel afs.* skip # AFS metadata and ACLs $ mount | grep patrice /home/patrice type nfs4 (rw,nosuid,nodev,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=X,local_lock=none,addr=Y) Finally, note that I am a «he» otherwise in French it's generally Patricia for «her» :-D