"su" and user shell arguments

From Brandonhutchinson.com

Revision as of 16:44, 11 November 2008 by Hutch (Talk | contribs)
(diff) ←Older revision | Current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

The "su" command does not seem to work when the user's shell has a space (e.g., for command arguments).

$ cat /etc/redhat-release
Red Hat Enterprise Linux WS release 3 (Taroon Update 4)
$ grep hutchib /etc/passwd
hutchib:x:6919:0:Brandon Hutchinson - MSP UNIX:/home/hutchib:/home/vt3k 10.0.0.1
# su - hutchib
su: /home/vt3k 10.0.0.1: No such file or directory

After doing some testing, it turns out that a space in the user's shell causes problems.

$ grep hutchib /etc/passwd | cat -vet
hutchib:x:6919:0:Brandon Hutchinson - MSP UNIX:/home/hutchib:/home/vt3k $
# su - hutchib
su: /home/vt3k : No such file or directory
$ grep hutchib /etc/passwd | cat -vet
hutchib:x:6919:0:Brandon Hutchinson - MSP UNIX:/home/hutchib:/home/vt3k$
#su - hutchib
freevt3k - version A.01.03 (Oct 20 2000-13:43:13)

Usage: freevt3k [-li|-lo|-lio] [-f file] [-x] [-tt n] [-t]
                [-C breakchar] [-B count] [-T timer]
                [-X file] [-a|-I file] [-d[d]] host 
...

I don't know of a direct workaround for this using su. You could place /home/vt3k 10.0.0.1 in the user's profile and use a "real shell," but I imagine there is a slight possibility the user could escape into the real shell.

telnet/ssh works as expected when the user's shell (in this case, /home/vtk3) contains arguments.

Personal tools