Корінна оболонка помилково змінена. Як я можу повернути його на дійсну оболонку?


19

Я помилково ввійшов

chsh -s /usr/bin 

замість

chsh -s /bin/bash 

і тепер я не можу увійти до кореневої оболонки, як запустити bash shell як root вручну?


в якому контексті ти це зробив. У поточному терміналі для оболонки користувачів за замовчуванням?
jgr208

у вас немає користувачів у групі sudo?
Rui F Ribeiro

3
робить sudo vipwроботу?
Rui F Ribeiro

1
@RuiFRibeiro так, це зробив спасибі, я не знав, що можу змінити корінну оболонку за замовчуванням у цьому файлі
ChiseledAbs,

1
У цьому випадку це не потрібно, але коли ви ненавмисно створили катастрофу, пов’язану з коренем, зазвичай ви можете перевести машину в єдиний користувальницький режим, виправити проблему та повернутися до багатокористувацького режиму.
бортовий борт

Відповіді:


29

Хоча root не має доступу, користувач групи sudo все ще може виконувати привілейовані команди - здається, помилка не в sudo, а в іншому місці sudo chshкоманди (наприклад, chsh error).

Як таке, судо, мабуть, працює.

Файл passwd можна редагувати за допомогою:

sudo vipw

І кореневу оболонку змінювали вручну.

(перший рядок /etc/passwdзазвичай)

root:x:0:0:root:/root:/bin/bash

Fom man vipw

Команди vipw та vigr редагують файли / etc / passwd та / etc / group відповідно. За допомогою прапора -s вони редагуватимуть тіньові версії цих файлів / etc / shadow та / etc / gshadow відповідно. Програми встановлять відповідні блокування для запобігання корупції файлів.


3
Я ніколи про це не знав vipwі vigr, дякую! Я завжди користувавсяsudo vim /etc/passwd
кіт

3
Можливо, вас зацікавить visudo sudo.ws/man/1.8.15/visudo.man.html також @tac
Rui F Ribeiro

3
Або sudo -e, що виконує цю функцію блокування-редагування для будь-якого редагування.
kojiro

16

Інший варіант, якщо припустити, що у вас є доступ до іншого облікового запису, - це вручну змінити обкладинку за замовчуванням за допомогою su --shell=/bin/bash:

-s, --shell = ПОТРІБНО
запустити SHELL, якщо / etc / shell дозволяє це

Основна перевага цього полягає в тому, що він вимагає лише доступу до іншого облікового запису, а не іншого привілейованого .


8

З міркувань безпеки входите в систему, будь то текстові чи графічні та утиліти, suі sudoякі дозволяють виконувати команди як інший користувач, всі виконують ці команди через оболонку цільового користувача. Якщо оболонка цільового користувача не функціонує, ви побачили результати :-(

Якщо у вас все-таки функціонує ще функціональна коренева оболонка або щось подібне до встановленого бінарного файлу setuid або чогось, що дозволяє вам обійти це рішення, перезавантаження та виправлення проблеми за допомогою системи порятунку або живого зображення - це, мабуть, найкраща ставка.

Завантажте систему порятунку, встановіть кореневу файлову систему вашої реальної системи десь, скажімо /mnt/foo, та відредагуйте, /mnt/foo/etc/passwdщоб виправити оболонку. Збережіть, відключіть, і ви закінчите.


цікаво, що станеться, якщо ви зробите це, а файл / etc / passwd знаходиться в хеші замість простого тексту?
jgr208

1
/etc/passwdце непростий текст? Я цього не бачив принаймні, як, наприклад, десятиліття. Це все-таки річ у деяких системах? У будь-якому випадку, я думаю, chroot /mnt/foo chsh -s /bin/bashможе зробити трюк у такому випадку?
Селада

У мене ніколи не було описаної проблеми, проте я працюю із заблокованими системами, для яких потрібно мати / etc / passwd, не в простому тексті, щоб уникнути хакерів і таких, що ще більше пошкоджують систему, якщо вони отримують доступ. Хм, це може спрацювати, давайте просто скажу, що я сподіваюся, що мені ніколи не доведеться спробувати і подивитися, чи працює він насправді.
jgr208

Я зміг редагувати / etc / passwd з sudo з облікового запису користувача, я не знав, що оболонка визначена в цьому файлі, дякую
ChiseledAbs

@ChiseledAbs о, ти був? Добре вам, радий, що ви вирішили свою проблему. Я не думав, що це дозволить тобі.
Селада

6

Додайте init=/bin/bashдо командного рядка ядра (якщо завантажуєтесь із grub, натисніть, eщоб змінити запис завантаження), і у вас буде оболонка bash, що працює як root, навіть не вказуючи пароль. Ваша коренева файлова система, ймовірно, все-таки буде змонтована лише для читання, тому спочатку вам потрібно буде її перезавантажити, потім ви можете змінити оболонку назад chsh.


4

sudo usermod -s /bin/bash jdoe

змінить оболонку jdoe на bash. Потім ви можете sudo egrep jdoe /etc/passwdперевірити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.