Gerd Möllmann writes: Hi Gerd, >>> I'm afraid that's also not it. I can now boil it down to the following >>> test with emacs -Q (I'm always building without window system FWIW): >>> >>> (file-writable-p "/ssh:mini:/tmp") >>> => nil >>> (file-writable-p (file-truename "/ssh:mini:/tmp")) >>> => t >>> >>> where >>> >>> (file-truename "/ssh:mini:/tmp") >>> => "/ssh:mini:/private/tmp" >> >> Yes, this is the area I'm looking at. "/ssh:mini:/tmp" has file >> permissions lrwxr-xr-x, and "/ssh:mini:/private/tmp" has file >> permissions drwxrwxrwt. (file-writable-p "/ssh:mini:/tmp") should look >> at the permissions of the target, but it doesn't. It looks at the >> permissions of the symlink itself. > > That's what I suspected.. > >> And everything is mixed happily with cached values, for performance >> speedup ... > > ...and there I got stuck :-) Finally., I could reproduce the problem. There was the weirdness, that on GNU/Linux I couldn't give a symlink the permissions 555 (your "/tmp" symlink has it), and so I couldn't test. Fortunately, I remembered my FreeBSD 14 VM, and there I could reproduce the problem. The appended patch ought to fix it. Could you, pls, test? >> OK, I'll continue to understand what happens. In the meantime, you might >> be better with setting tramp-use-file-attributes to nil, globally. At >> least it doesn't use the caches then. > > Yeah, (setq tramp-use-file-attributes nil) makes it work. Thanks! Don't forget to revert this, testing may patch. Best regards, Michael.