Subject: bug#21699: 24.5; Bug in backup-buffer-copy and/or set-file-extended-attributes etc

From: Eli Zaretskii <[email-masked]>
Date: Mon, 19 Oct 2015 11:23:36 +0300

> Date: Mon, 19 Oct 2015 03:57:13 -0400
> From: Eli Barzilay <[email-masked]>
> Cc: [email-masked]
> 
> > Also, I need the results of calling file-attributes and file-acl on
> > the file for which backup fails and on the backup directory.
> 
> Here they are, running from "emacs -Q" too.  I also included the results
> on the backup file itself (which *does* get created, as I said earlier):
> 
>     (file-attributes "l:/tmp/x")
>       (nil 1 1000 513 (22052 36758 0 0) (22052 36761 0 0) (22052 36758
> 0 0) 21 "-rw-rw-rw-" t 0 (29879 . 49391))
>     (file-acl "l:/tmp/x")
>       "O:S-1-5-21-255753047-2700399607-2208692068-1000G:S-1-22-2-1000D:P(A;;0x12019f;;;S-1-5-21-255753047-2700399607-2208692068-1000)(A;;FR;;;S-1-22-2-1000)(A;;FR;;;WD)"
> 
>     (file-attributes "c:/eli/.backups")
>       (t 1 1000 513 (22052 36737 0 0) (22052 36737 0 0) (21144 22619 0
> 0) 524288 "drwxrwxrwx" t (3584 0 . 63301) (58391 . 43832))
>     (file-acl "c:/eli/.backups")
>       "O:S-1-5-21-1288650996-1850016226-2761200207-1000G:S-1-5-21-1288650996-1850016226-2761200207-513D:P(A;;FA;;;S-1-5-21-1288650996-1850016226-2761200207-1000)(A;;0x120080;;;S-1-5-21-1288650996-1850016226-2761200207-513)(A;;0x120080;;;WD)(A;OICIIOID;GA;;;BA)(A;ID;FA;;;SY)(A;OICIIOID;GA;;;SY)(A;OICIID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)(A;OICIIOID;SDGXGWGR;;;AU)"
> 
>     (file-attributes "c:/eli/.backups/!drive_l!tmp!x~")
>       (nil 1 1000 513 (22052 36737 0 0) (22052 36735 0 0) (21757 58044
> 0 0) 17 "-rw-rw-rw-" t (384512 1 . 20580) (58391 . 43832))
>     (file-acl "c:/eli/.backups/!drive_l!tmp!x~")
>       "O:S-1-5-21-255753047-2700399607-2208692068-1000G:S-1-22-2-1000D:P(A;;0x12019f;;;S-1-5-21-255753047-2700399607-2208692068-1000)(A;;FR;;;S-1-22-2-1000)(A;;FR;;;WD)"

AFAIU, this means you don't have full access ("FA") to the file you
are editing, and I guess that's why chmod fails.  If so, there's not
much we can do about that.

However, with set-file-extended-attributes fixed, backing up works
again for you, is that right?

> >> 4. The last problem of chmod-ing failing after setting the windows
> >>    acl is probably better to defer after resolving the above.
> >
> > That's a big surprise: chmod is largely a no-op on Windows.  If you
> > invoke set-file-modes exactly like backup-buffer-copy does, but from
> > the "M-:" prompt, what error does it report?
> 
> I suspect that some of those ACL entries mean that my user is not
> allowed to change the file.  In any case, the error that I got when I
> played with it is:
> 
> Debugger entered--Lisp error: (file-error "Doing chmod" "permission
> denied" "c:/eli/.backups/!drive_l!lambda!tmp!x~")
>   set-file-modes("c:/eli/.backups/!drive_l!lambda!tmp!x~" 438)
>   eval((set-file-modes "c:/eli/.backups/!drive_l!lambda!tmp!x~" 438) nil)

Yes, I think your suspicion is correct.  (In general, I'd suggest to
take ownership, from the Windows side, on all of the files on that
Linux volume you are using from Windows.  IME, this avoids many
problems with access denial from the Windows side.)