[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

root account inaccessible, was 'login problems on change of default shell'



On Oct 5, 2014, at 4:21 PM, Nemeth Gyorgy wrote:

> 2014-10-05 19:42 keltezéssel, John Aten írta:
> 
>> I just built bash 4.3.29 from source. I wanted to change my root and one user account to use it as the default shell. I ran sudo chsh and entered /usr/local/bin/bash, and everything was fine. I could log in and out, run commands, and the $SHELL and $BASH_VERSION environment variables confirmed the change. 
>> 
>> Things got hinky, though when I tried to change my regular, non-root user account. While logged in as my regular user, I entered chsh, but when I typed in the path, it says that I had entered an invalid shell. I tried sudo chsh, and the same. I was perplexed by this, as it seemed perfectly valid when I ran it as this user by typing the path into the command line of the previous default shell. Commands run normally, and $BASH_VERSION returns the right number. I tried to change my regular user's shell again and got the same error. I triple checked the path, and tried again, this time while logged in as root. It then returned:
>> 
>> chsh: PAM: Authentication failure
>> 
>> I logged in as root and changed the shell for my regular user account in /etc/passwd, but after this I couldn't log in to my regular user account at all. At first it gave me a 'login incorrect' error, but on repeated attempts it would give what looks like a 10 or 15 line message, but the screen clears so quickly I can't read it. I logged in as root and changed my regular user's default shell back to the previous /bin/bash, and now it works fine.
>> 
>> Any thoughts?
> 
> from man chsh:
> "The only restriction placed on the login shell is that the command name
> must be listed in /etc/shells, unless the invoker is the superuser, and
> then any value may be added."
> 
> So put /usr/local/bin/bash into /etc/shells
> 
> Hope, this helps.

I think this will work, but I have since gotten myself into real trouble. At some point in my editing of /etc/passwd, I unwittingly deleted the 'r' from the entry for root. My first user listed is now 'oot'. I now, of course, cannot do anything that relies on the root account. I tried logging in as 'oot' to change /etc/passwd, but the I get an 'incorrect login' error. I downloaded the live cd image and made a bootable usb stick, but I can only pull up the live system's /etc/passwd, not the file for the already installed system. I have poked around some and but it doesn't appear to see the HD at all. I tried rebooting from the hd and getting the device name with mount or fdisk -l, but when I tried to reboot with the usb and mount this device it couldn't find it. How do I get access to the installed /etc/passwd ?

Reply to: