bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Pierre Neidhardt

Using TRAMP's sudo, in Eshell:

$ alias c 'cp $*'
$ sudo c foo /etc/bar
/bin/cp: cannot create regular file 'bar': Permission denied

(Assuming that the user does not have write permissions to /etc.)

As a work around, it is possible to use "*sudo".



In GNU Emacs 25.2.1 (x86_64-pc-linux-gnu, GTK+ Version 3.22.15)
 of 2017-08-28 built on dhiov23k
Windowing system distributor 'The X.Org Foundation', version 11.0.11903000
System Description: Gentoo Base System release 2.3

Configured using:
 'configure --prefix=/usr --build=x86_64-pc-linux-gnu
 --host=x86_64-pc-linux-gnu --mandir=/usr/share/man
 --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
 --localstatedir=/var/lib --disable-dependency-tracking
 --disable-silent-rules --docdir=/usr/share/doc/emacs-25.2
 --htmldir=/usr/share/doc/emacs-25.2/html --libdir=/usr/lib64
 --program-suffix=-emacs-25 --infodir=/usr/share/info/emacs-25
 --localstatedir=/var
 --enable-locallisppath=/etc/emacs:/usr/share/emacs/site-lisp
 --with-gameuser=:gamestat --without-compress-install
 --with-file-notification=inotify --enable-acl --without-dbus
 --without-modules --without-gpm --without-hesiod --without-kerberos
 --without-kerberos5 --with-xml2 --without-selinux --with-gnutls
 --without-wide-int --with-zlib --with-sound=alsa --with-x --without-ns
 --without-gconf --without-gsettings --without-toolkit-scroll-bars
 --with-gif --with-jpeg --with-png --with-rsvg --with-tiff --with-xpm
 --with-imagemagick --with-xft --without-cairo --without-libotf
 --without-m17n-flt --with-x-toolkit=gtk3 --without-xwidgets
 GENTOO_PACKAGE=app-editors/emacs-25.2 'CFLAGS=-march=ivybridge -O2
 -pipe' CPPFLAGS= 'LDFLAGS=-Wl,-O1 -Wl,--as-needed''

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND NOTIFY ACL GNUTLS LIBXML2
FREETYPE XFT ZLIB GTK3 X11

Important settings:
  value of $LANG: en_US.utf8
  locale-coding-system: utf-8-unix



Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Lars Ingebrigtsen
Pierre Neidhardt <[hidden email]> writes:

> Using TRAMP's sudo, in Eshell:
>
> $ alias c 'cp $*'
> $ sudo c foo /etc/bar
> /bin/cp: cannot create regular file 'bar': Permission denied
>
> (Assuming that the user does not have write permissions to /etc.)
>
> As a work around, it is possible to use "*sudo".

Trying to reproduce this in Emacs 28 gives me a different, and more
logical (?) result:

~/src/emacs/trunk $ alias c 'cp $*'
~/src/emacs/trunk $ sudo c foo /etc/bar
[sudo] password for larsi:
sudo: c: command not found

Is this working as designed, or is eshell supposed to expand the alias
before calling sudo?

--
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Pierre Neidhardt-2
Lars Ingebrigtsen <[hidden email]> writes:

> Is this working as designed, or is eshell supposed to expand the alias
> before calling sudo?

I don't remember what I had in mind when I initially posted the issue,
but I suppose that I reported it because I noticed an inconsistency
between "sudo" and "*sudo".

That said, Bash does not expand aliases before sudo.  So maybe the right
thing to do is to have "*sudo" behave the same way as well, to be
consistent with what users may be familiar with (Bash).

Cheers!

--
Pierre Neidhardt
https://ambrevar.xyz/

signature.asc (521 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Lars Ingebrigtsen
Pierre Neidhardt <[hidden email]> writes:

> I don't remember what I had in mind when I initially posted the issue,
> but I suppose that I reported it because I noticed an inconsistency
> between "sudo" and "*sudo".
>
> That said, Bash does not expand aliases before sudo.  So maybe the right
> thing to do is to have "*sudo" behave the same way as well, to be
> consistent with what users may be familiar with (Bash).

In Emacs 28, they do work the same:

~/src/emacs/trunk $ alias c 'cp $*'
~/src/emacs/trunk $ sudo c foo /etc/bar
[sudo] password for larsi:
sudo: c: command not found
~/src/emacs/trunk $ *sudo c foo /etc/bar
[sudo] password for larsi:
sudo: c: command not found

So that's consistent, and probably the correct way to behave.  So I'm
closing this bug report.

--
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Pierre Neidhardt-2
Note that the behaviour of "sudo ..." maybe depend on
eshell-prefer-lisp-functions.
If it's set to nil, then "*sudo" and "sudo" are the same, which explains
the consistency you are seeing.

--
Pierre Neidhardt
https://ambrevar.xyz/

signature.asc (521 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

bug#28320: 25.2; Eshell/TRAMP's sudo does not work with aliases

Pierre Neidhardt-2
I guess it's all good then, maybe this bug was fixed in the mean time,
or I just misreported.

Thank you for digging into this!

--
Pierre Neidhardt
https://ambrevar.xyz/

signature.asc (521 bytes) Download Attachment