2

I recently installed zsh as my shell on my laptop, and was loving the change. As a result, I decided to add it as the default on my server. I edited my /etc/passwd to point to /etc/zsh for my user and root (on the server), then exited from ssh.

Except I forgot to install zsh.

Now I can't log in as root or that user. I DO have physical access to the machine, but I'd rather not hook up a monitor. I also have access to a normal user account and know the root password. How do I go about fixing this?

Shouldn't need to be mentioned, but I can't install zsh without root access.

2 Answers 2

5

You can use the -s flag on su to specify the shell, so you can use su -s /bin/bash - to get to root using the bash shell.

3
  • I'm getting "permission denied" Aug 5, 2010 at 3:37
  • sudo su -s /bin/bash - if you're a sudoer
    – Sweet
    Aug 5, 2010 at 3:47
  • Missing a space in the command. Fixed
    – Sweet
    Aug 5, 2010 at 3:48
0

You can execute a remote command by ssh, including another shell. You'll want to force a tty allocation so the shell can properly run. You can then run a root shell or edit files as necessary using sudo as normal.

ssh hostname -t /bin/bash

2
  • Not working. Permission denied. Aug 5, 2010 at 3:44
  • 1
    Interesting. Further experimenting seems to indicate SSHD restricts logins if the passwd-specified shell doesn't exist. The design reasons why seems to be some people/systems still use invalid shell for "disabling" a user. Apparently specifying a shell works fine only if you already have some other working shell.
    – Jeremy M
    Aug 5, 2010 at 4:20

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .