Package: emacs;
Reported by: Richard Sent <richard <at> freakingpenguin.com>
Date: Wed, 5 Feb 2025 16:18:02 UTC
Severity: normal
Found in version 29.4
To reply to this bug, email your comments to 76072 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#76072
; Package emacs
.
(Wed, 05 Feb 2025 16:18:02 GMT) Full text and rfc822 format available.Richard Sent <richard <at> freakingpenguin.com>
:bug-gnu-emacs <at> gnu.org
.
(Wed, 05 Feb 2025 16:18:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Richard Sent <richard <at> freakingpenguin.com> To: bug-gnu-emacs <at> gnu.org Subject: 29.4; eshell/sudo does not work with aliases and lisp commands with absolute arguments Date: Wed, 05 Feb 2025 11:17:25 -0500
Hi all, I've found that eshell/sudo consistently does not prompt the user for their sudo password when an absolute path is passed as an argument for a lisp command, but does for relative paths and external commands. Additionally, eshell/sudo does not work when command is an alias, regardless of when lisp or external commands are used. From emacs -Q and the ~/temp directory: --8<---------------cut here---------------start------------->8--- # (require 'eshell) # (add-to-list 'eshell-modules-list 'eshell-tramp) # M-x eshell ~/temp $ mkdir foo ~/temp $ chmod 700 foo ~/temp $ sudo chown root:root foo # invokes eshell/ls with "foo", works ~/temp $ sudo ls foo # user prompted for password as expected ~/temp $ echo $? 0 # invokes eshell/ls with "/home/richard/temp/foo" ~/temp $ sudo ls ~/temp/foo Opening directory: Permission denied, /home/richard/temp/foo # invokes external ls ~/temp $ sudo *ls ~/temp/foo ~/temp $ echo $? 0 # using an alias, relative paths no longer work either for both internal # and external commands ~/temp $ alias ll 'ls -l $*' ~/temp $ sudo ll foo Opening directory: Permission denied, /home/richard/temp/foo ~/temp $ alias ll '*ls -l $*' ~/temp $ sudo ll foo /run/current-system/profile/bin/ls: cannot open directory 'foo': Permission denied --8<---------------cut here---------------end--------------->8--- My guess for the absolute path problem is that passing an absolute path "exits" the tramp-elevated environment created by eshell--method-wrap-directory in eshell/sudo. In GNU Emacs 29.4 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.41, cairo version 1.18.0) Windowing system distributor 'The X.Org Foundation', version 11.0.12101014 System Description: Guix System Configured using: 'configure CONFIG_SHELL=/gnu/store/m0xdsa8cfq6mq1kxgxmpmpg71la4f0b9-bash-minimal-5.1.16/bin/bash SHELL=/gnu/store/m0xdsa8cfq6mq1kxgxmpmpg71la4f0b9-bash-minimal-5.1.16/bin/bash --prefix=/gnu/store/2vknfplgnim63d8gjbkmiwhvfp0v58hc-emacs-29.4 --enable-fast-install --with-cairo --with-modules --with-native-compilation=aot --disable-build-details' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB Important settings: value of $EMACSLOADPATH: /home/richard/.guix-home/profile/share/emacs/site-lisp:/gnu/store/2vknfplgnim63d8gjbkmiwhvfp0v58hc-emacs-29.4/share/emacs/29.4/lisp value of $LANG: en_US.utf8 locale-coding-system: utf-8-unix Major mode: ELisp/l Minor modes in effect: eshell-syntax-highlighting-global-mode: t rainbow-delimiters-mode: t hl-line-mode: t all-the-icons-completion-mode: t which-key-mode: t display-time-mode: t global-git-commit-mode: t magit-auto-revert-mode: t eat-eshell-mode: t electric-pair-mode: t server-mode: t global-auto-revert-mode: t delete-selection-mode: t display-battery-mode: t corfu-popupinfo-mode: t global-corfu-mode: t corfu-mode: t savehist-mode: t marginalia-mode: t vertico-mode: t override-global-mode: t shell-dirtrack-mode: t puni-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tab-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t buffer-read-only: t column-number-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /gnu/store/x3g6222n0swjr0mm4w7p2pdykwgh3iaa-emacs-transient-0.8.2/share/emacs/site-lisp/transient-0.8.2/transient hides /gnu/store/2vknfplgnim63d8gjbkmiwhvfp0v58hc-emacs-29.4/share/emacs/29.4/lisp/transient /gnu/store/7c6v7wydmmhn0b9irm4jvgajrizwag6m-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-inspect hides /gnu/store/2vknfplgnim63d8gjbkmiwhvfp0v58hc-emacs-29.4/share/emacs/29.4/lisp/net/soap-inspect /gnu/store/7c6v7wydmmhn0b9irm4jvgajrizwag6m-emacs-soap-client-3.2.3/share/emacs/site-lisp/soap-client-3.2.3/soap-client hides /gnu/store/2vknfplgnim63d8gjbkmiwhvfp0v58hc-emacs-29.4/share/emacs/29.4/lisp/net/soap-client Features: (shadow sort emacsbug em-xtra ace-window mail-extr cape sh-script treesit executable ruby-mode smie geiser-mode geiser-xref geiser-compile oc-basic ol-eww eww url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect ol-docview ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi consult-xref consult magit-bookmark bookmark avy misearch multi-isearch cl-print shortdoc em-rebind em-smart vc-git tramp-cache time-stamp tramp-sh puni pulse eshell-syntax-highlighting em-unix em-term em-script em-prompt em-ls em-hist em-pred em-glob em-extpipe em-cmpl em-dirs em-basic em-banner em-alias em-tramp eshell nndraft nnmh network-stream nnfolder nnnil gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig nntp gnus-cache gnus-sum shr pixel-fill kinsoku url-file gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap utf7 nnoo gnus-spec gnus-win mule-util tramp-cmds cal-iso face-remap org-agenda org-element org-persist org-id avl-tree org-refile ob-plantuml org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint org-pcomplete org-list org-footnote org-faces org-entities ob-emacs-lisp ob-core ob-eval org-cycle org-table org-keys oc org-loaddefs cal-menu calendar cal-loaddefs ol org-fold org-fold-core org-compat org-version org-macs rainbow-delimiters hl-line rs-utils rs-ui all-the-icons-completion all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons which-key doom-dracula-theme doom-themes doom-themes-base time rs-tools ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util daemons calc calc-loaddefs rect calc-macs rs-smtp smtpmail rs-skeleton rs-navigation rs-media doc-view jka-compr rs-magit magit-extras magit-submodule magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit package url-handlers magit-repos magit-apply magit-wip magit-log which-func magit-diff smerge-mode diff diff-mode git-commit log-edit pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor magit-mode benchmark magit-git magit-base magit-section cursor-sensor crm rs-integrations debbugs soap-client url-http url-auth url-gw nsm rng-xsd rng-dt rng-util xsd-regexp debbugs-compat rs-ide eglot external-completion array jsonrpc ert ewoc debug backtrace flymake-proc flymake imenu rs-ibuffer rs-guix rs-project rs-eshell diminish esh-var esh-mode esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util eat term disp-table ehelp use-package-diminish rs-erc rs-epg rs-elfeed rs-editing rg vc vc-dispatcher rg-info-hack rg-menu rg-ibuffer rg-result wgrep-rg rg-history rg-header ibuf-ext ibuffer ibuffer-loaddefs cus-edit wgrep grep elec-pair ispell rs-dired ls-lisp image-dired image-dired-tags image-dired-external image-dired-util xdg image-mode exif dired-x dired-aux rs-core server autorevert filenotify delsel comp comp-cstr warnings exec-path-from-shell rs-constants battery dbus rs-completion kind-icon svg-lib svg dom color corfu-popupinfo corfu orderless savehist marginalia vertico rs-auth-source auth-source-pass rs-typescript rs-text rs-scheme skeleton geiser-guile info-look info geiser geiser-debug geiser-repl geiser-image geiser-capf geiser-doc geiser-menu geiser-autodoc geiser-edit geiser-completion geiser-eval geiser-connection tq geiser-syntax scheme geiser-impl help-fns radix-tree geiser-log geiser-popup view geiser-custom geiser-base rs-rust rs-ruby rs-python rs-org plantuml-mode xml use-package-bind-key bind-key rs-elisp rs-docker docker docker-context docker-volume docker-network docker-image docker-container docker-faces docker-core docker-compose docker-process docker-utils tablist advice tablist-filter semantic/wisent/comp semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local find-func cedet tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat shell pcomplete parse-time iso8601 docker-group transient pcase format-spec edmacro kmacro dash aio s rs-csharp rs-cl slime easy-mmode apropos compile etags fileloop generator xref project arc-mode archive-mode noutline outline icons pp comint ansi-osc ansi-color ring hyperspec thingatpt browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util url-parse auth-source eieio eieio-core json map byte-opt url-vars rs-nnrss rs-gnus nnmail gnus-int mail-source gnus-range message sendmail mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus nnheader gnus-util text-property-search time-date subr-x mail-utils range mm-util mail-prsvr wid-edit cus-load no-littering compat compat-30 cl-macs gv cl-extra help-mode cl-seq use-package-core cl-loaddefs cl-lib bytecomp byte-compile markdown-mode-autoloads nhexl-mode-autoloads lorem-ipsum-autoloads geiser-autoloads geiser-guile-autoloads plantuml-mode-autoloads yaml-mode-autoloads docker-compose-mode-autoloads dockerfile-mode-autoloads json-snatcher-autoloads json-mode-autoloads rx js2-mode-autoloads simple-httpd-autoloads skewer-mode-autoloads aio-autoloads docker-autoloads web-mode-autoloads macrostep-autoloads slime-autoloads which-key-autoloads moody-autoloads doom-themes-autoloads shrink-path-autoloads nerd-icons-autoloads doom-modeline-autoloads diminish-autoloads beacon-autoloads all-the-icons-completion-autoloads memoize-autoloads all-the-icons-autoloads bluetooth-autoloads password-store-autoloads pass-autoloads daemons-autoloads embark-autoloads popup-autoloads f-autoloads dumb-jump-autoloads avy-autoloads ace-window-autoloads emms-autoloads tablist-autoloads pdf-tools-autoloads transient-autoloads dash-autoloads magit-autoloads soap-client-autoloads debbugs-autoloads eshell-syntax-highlighting-autoloads eat-autoloads elfeed-autoloads s-autoloads rg-autoloads wgrep-autoloads rainbow-delimiters-autoloads async-autoloads puni-autoloads dirvish-autoloads exec-path-from-shell-autoloads no-littering-autoloads cape-autoloads consult-autoloads marginalia-autoloads orderless-autoloads vertico-autoloads svg-lib-autoloads kind-icon-autoloads compat-autoloads corfu-autoloads guix-emacs rmc iso-transl tooltip cconv 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 theme-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 move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 724523 79928) (symbols 48 50875 2) (strings 32 197993 5987) (string-bytes 1 6854257) (vectors 16 105023) (vector-slots 8 2080767 70560) (floats 8 1286 1132) (intervals 56 2909 2150) (buffers 984 31)) -- Take it easy, Richard Sent Making my computer weirder one commit at a time.
bug-gnu-emacs <at> gnu.org
:bug#76072
; Package emacs
.
(Wed, 05 Feb 2025 20:11:02 GMT) Full text and rfc822 format available.Message #8 received at 76072 <at> debbugs.gnu.org (full text, mbox):
From: Jim Porter <jporterbugs <at> gmail.com> To: Richard Sent <richard <at> freakingpenguin.com>, 76072 <at> debbugs.gnu.org Subject: Re: bug#76072: 29.4; eshell/sudo does not work with aliases and lisp commands with absolute arguments Date: Wed, 5 Feb 2025 12:10:13 -0800
Thanks for the bug report. On 2/5/2025 8:17 AM, Richard Sent wrote: > I've found that eshell/sudo consistently does not prompt the user for > their sudo password when an absolute path is passed as an argument for a > lisp command, but does for relative paths and external commands. The current behavior here is technically correct, if unexpected. Absolute filenames in Eshell *always* refer to the local filename (so no going through Tramp), just like when you pass the filename to 'find-file'. Adding an option to adjust this behavior is bug#70792. I have a very WIP patch for it that would allow treating absolute filenames as local to the current remote connection. > Additionally, eshell/sudo does not work when command is an alias, > regardless of when lisp or external commands are used. This is bug#68074, which was fixed for Emacs 30.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.