unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#58132: 29.0.50; Tramp: not preserving remote chmod attributes when copy
@ 2022-09-28  3:25 Jean Louis
  2022-10-31  8:32 ` Michael Albinus
  0 siblings, 1 reply; 3+ messages in thread
From: Jean Louis @ 2022-09-28  3:25 UTC (permalink / raw)
  To: 58132


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/





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#58132: 29.0.50; Tramp: not preserving remote chmod attributes when copy
  2022-09-28  3:25 bug#58132: 29.0.50; Tramp: not preserving remote chmod attributes when copy Jean Louis
@ 2022-10-31  8:32 ` Michael Albinus
  2022-11-07 10:40   ` Michael Albinus
  0 siblings, 1 reply; 3+ messages in thread
From: Michael Albinus @ 2022-10-31  8:32 UTC (permalink / raw)
  To: Jean Louis; +Cc: 58132

Jean Louis <bugs@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.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#58132: 29.0.50; Tramp: not preserving remote chmod attributes when copy
  2022-10-31  8:32 ` Michael Albinus
@ 2022-11-07 10:40   ` Michael Albinus
  0 siblings, 0 replies; 3+ messages in thread
From: Michael Albinus @ 2022-11-07 10:40 UTC (permalink / raw)
  To: Jean Louis; +Cc: 58132-done

Michael Albinus <michael.albinus@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.





^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-11-07 10:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-28  3:25 bug#58132: 29.0.50; Tramp: not preserving remote chmod attributes when copy Jean Louis
2022-10-31  8:32 ` Michael Albinus
2022-11-07 10:40   ` Michael Albinus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).