GNU bug report logs - #58132
29.0.50; Tramp: not preserving remote chmod attributes when copy

Previous Next

Package: emacs;

Reported by: Jean Louis <bugs <at> gnu.support>

Date: Wed, 28 Sep 2022 03:50:01 UTC

Severity: normal

Tags: notabug

Found in version 29.0.50

Done: Michael Albinus <michael.albinus <at> gmx.de>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 58132 in the body.
You can then email your comments to 58132 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#58132; Package emacs. (Wed, 28 Sep 2022 03:50:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jean Louis <bugs <at> gnu.support>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 28 Sep 2022 03:50:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Jean Louis <bugs <at> gnu.support>
To: bug-gnu-emacs <at> gnu.org
Subject: 29.0.50; Tramp: not preserving remote chmod attributes when copy
Date: Wed, 28 Sep 2022 06:25:43 +0300
Normal behavior with local `copy' command is to preserve attributes of
the destination file, if such file exists.

Normal behavior of ssh/scp is to preserve file attributes of destination
file if such file exists:

$ ssh stw1 ls -l /home/admin/diff.sql
-rwxr-xr-x 1 admin admin 6240 Sep 27 20:22 /home/admin/diff.sql
~
$ ls -l diff.sql
-rw-r--r-- 1 admin admin 6240 Jun 20  2021 diff.sql
~
$ scp diff.sql stw1:~/
diff.sql                                                          100% 6240    20.6KB/s   00:00    
~
$ ssh stw1 ls -l /home/admin/diff.sql
-rwxr-xr-x 1 admin admin 6240 Sep 27 20:23 /home/admin/diff.sql
~

I have noticed that Tramp transfers file attributes from local file to
remote file. This causes server errors, as it is out of the habit that
file attributes on existing file are to be preserved.



In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.17.6, Xaw3d scroll bars) of 2022-09-16 built on
 protected.rcdrun.com
Repository revision: 3c1579697ff03d3991b41ead503211cffac0998f
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Parabola GNU/Linux-libre

Configured using:
 'configure --with-x-toolkit=lucid'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
WEBP X11 XAW3D XDBE XIM XINPUT2 XPM LUCID ZLIB

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LANG: de_DE.UTF-8
  value of $XMODIFIERS: @im=exwm-xim
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date subr-x mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
cl-loaddefs cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils rmc iso-transl tooltip eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
faces cus-face macroexp files window text-properties overlay sha1 md5
base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo x-toolkit
xinput2 x multi-tty make-network-process emacs)

Memory information:
((conses 16 39440 9450)
 (symbols 48 5118 2)
 (strings 32 14282 1683)
 (string-bytes 1 402633)
 (vectors 16 10393)
 (vector-slots 8 157935 15159)
 (floats 8 40 15)
 (intervals 56 275 0)
 (buffers 1000 12))

-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#58132; Package emacs. (Mon, 31 Oct 2022 08:34:02 GMT) Full text and rfc822 format available.

Message #8 received at 58132 <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Jean Louis <bugs <at> gnu.support>
Cc: 58132 <at> debbugs.gnu.org
Subject: Re: bug#58132: 29.0.50; Tramp: not preserving remote chmod
 attributes when copy
Date: Mon, 31 Oct 2022 09:32:44 +0100
Jean Louis <bugs <at> gnu.support> writes:

Hi Jean,

> Normal behavior with local `copy' command is to preserve attributes of
> the destination file, if such file exists.
>
> Normal behavior of ssh/scp is to preserve file attributes of destination
> file if such file exists:
>
> $ ssh stw1 ls -l /home/admin/diff.sql
> -rwxr-xr-x 1 admin admin 6240 Sep 27 20:22 /home/admin/diff.sql
> ~
> $ ls -l diff.sql
> -rw-r--r-- 1 admin admin 6240 Jun 20  2021 diff.sql
> ~
> $ scp diff.sql stw1:~/
> diff.sql                                                          100% 6240    20.6KB/s   00:00    
> ~
> $ ssh stw1 ls -l /home/admin/diff.sql
> -rwxr-xr-x 1 admin admin 6240 Sep 27 20:23 /home/admin/diff.sql
> ~
>
> I have noticed that Tramp transfers file attributes from local file to
> remote file. This causes server errors, as it is out of the habit that
> file attributes on existing file are to be preserved.

Tramp does what it is instructed. Copying a file is triggered by the
`copy-file' function. If the argument PRESERVE-PERMISSIONS is non-nil,
Tramp tries to preserve the permissions. See the docstring of `copy-file':

--8<---------------cut here---------------start------------->8---
copy-file is an interactive built-in function in ‘src/fileio.c’.

(copy-file FILE NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME
PRESERVE-UID-GID PRESERVE-PERMISSIONS)

Copy FILE to NEWNAME.  Both args must be strings.
If NEWNAME is a directory name, copy FILE to a like-named file under
NEWNAME.  For NEWNAME to be recognized as a directory name, it should
end in a slash.

This function always sets the file modes of the output file to match
the input file.

The optional third argument OK-IF-ALREADY-EXISTS specifies what to do
if file NEWNAME already exists.  If OK-IF-ALREADY-EXISTS is nil,
signal a ‘file-already-exists’ error without overwriting.  If
OK-IF-ALREADY-EXISTS is an integer, request confirmation from the user
about overwriting; this is what happens in interactive use with M-x.
Any other value for OK-IF-ALREADY-EXISTS means to overwrite the
existing file.

Fourth arg KEEP-TIME non-nil means give the output file the same
last-modified time as the old one.  (This works on only some systems.)

A prefix arg makes KEEP-TIME non-nil.

If PRESERVE-UID-GID is non-nil, try to transfer the uid and gid of
FILE to NEWNAME.

If PRESERVE-PERMISSIONS is non-nil, copy permissions of FILE to NEWNAME;
this includes the file modes, along with ACL entries and SELinux
context if present.  Otherwise, if NEWNAME is created its file
permission bits are those of FILE, masked by the default file
permissions.
--8<---------------cut here---------------end--------------->8---

So it isn't an error per se.

Best regards, Michael.




Reply sent to Michael Albinus <michael.albinus <at> gmx.de>:
You have taken responsibility. (Mon, 07 Nov 2022 10:41:02 GMT) Full text and rfc822 format available.

Notification sent to Jean Louis <bugs <at> gnu.support>:
bug acknowledged by developer. (Mon, 07 Nov 2022 10:41:02 GMT) Full text and rfc822 format available.

Message #13 received at 58132-done <at> debbugs.gnu.org (full text, mbox):

From: Michael Albinus <michael.albinus <at> gmx.de>
To: Jean Louis <bugs <at> gnu.support>
Cc: 58132-done <at> debbugs.gnu.org
Subject: Re: bug#58132: 29.0.50; Tramp: not preserving remote chmod
 attributes when copy
Date: Mon, 07 Nov 2022 11:40:11 +0100
Michael Albinus <michael.albinus <at> gmx.de> writes:

Hi Jean,

>> Normal behavior with local `copy' command is to preserve attributes of
>> the destination file, if such file exists.
>>
>> Normal behavior of ssh/scp is to preserve file attributes of destination
>> file if such file exists:
>>
>> $ ssh stw1 ls -l /home/admin/diff.sql
>> -rwxr-xr-x 1 admin admin 6240 Sep 27 20:22 /home/admin/diff.sql
>> ~
>> $ ls -l diff.sql
>> -rw-r--r-- 1 admin admin 6240 Jun 20  2021 diff.sql
>> ~
>> $ scp diff.sql stw1:~/
>> diff.sql                                                          100% 6240    20.6KB/s   00:00
>> ~
>> $ ssh stw1 ls -l /home/admin/diff.sql
>> -rwxr-xr-x 1 admin admin 6240 Sep 27 20:23 /home/admin/diff.sql
>> ~
>>
>> I have noticed that Tramp transfers file attributes from local file to
>> remote file. This causes server errors, as it is out of the habit that
>> file attributes on existing file are to be preserved.
>
> Tramp does what it is instructed. Copying a file is triggered by the
> `copy-file' function. If the argument PRESERVE-PERMISSIONS is non-nil,
> Tramp tries to preserve the permissions. See the docstring of `copy-file':
>
> So it isn't an error per se.

No further comment, I'm closing the bug therefore.

Best regards, Michael.




Added tag(s) notabug. Request was from Michael Albinus <michael.albinus <at> gmx.de> to control <at> debbugs.gnu.org. (Mon, 07 Nov 2022 10:42:01 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 05 Dec 2022 12:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 114 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.