Назад | Перейти на главную страницу

Заблокирован после установки bash без исполняемого бита

После scp-защищенный bash двоичный файл в виртуальную машину Linux openSUSE 12.2 и заменив им оболочку входа, ни один пользователь не сможет войти через ssh или консоль. Как оказалось, исполняемый бит при передаче потерялся, несмотря на использование -p переключатель.

Я попытался исправить это, установив файловую систему на хост Linux Xen и выполнив chmod +x /mnt/usr/local/bin/bash, но ситуация не улучшилась. Поможет ли перезагрузка гостевой ВМ?

Вот что я вижу на консоли:

xxx login: root
Password:
Last login: xxx
Have a lot of fun...
 -- root: no shell: permission denied

Это появляется в /mnt/var/log/messages

при входе в ssh:

sshd: User root not allowed because shell /bin/bash is not executable
sshd: input_userauth_request: invalid user root [preauth]
sshd: Postponed keyboard-interactive for invalid user root from x.x.x.x port xxxxx ssh2 [preauth]

при входе в консоль:

systemd-logind: New session x of user root.
login: ROOT LOGIN ON xvc0
console-kit-daemon: WARNING: Unable to spawn /etc/ConsoleKit/run-session.d/dbus_at_console.ck: Failed to execute child process "/etc/ConsoleKit/run-session.d/dbus_at_console.ck" (Permission denied)
systemd-logind: Removed session x.

И вот как я вызвал проблему:

# my /bin/bash has been a symlink to /usr/local/bin/bash since the first shellshock patch
scp -p buildhost:/tmp/bash /tmp/bash
# then I forgot to do chmod +x /tmp/bash
# then I forgot to do chsh -s /usr/bin/zsh, logout and login
mv /tmp/bash /usr/local/bin/bash && \
mv /bin/bash /var/tmp/bash-unpatched && \
chmod -x /var/tmp/bash-unpatched && \
ln -s /usr/local/bin/bash /bin/bash

Замена /bin/bash символическая ссылка реальным двоичным файлом тоже не помогла.

Придется перезагрузиться. Изменения прав доступа к файлам, сделанные гипервизором в файловой системе, используемой гостем, не будут обнаружены гостем.

В будущем при выполнении этого типа «обновления» открывайте отдельный сеанс оболочки для сервера, который вы обновляете, на случай, если что-то пойдет не так.

Похоже, у вас есть доступ к серверу. Вы можете попробовать разные подходы.

У вас должен быть работающий клиент ssh, попробуйте использовать ssh для исправления разрешений или войдите в систему с другой оболочкой.

ssh root@host chmod +x /bin/bash
ssh root@host /bin/dash

Если вы можете подключиться к пользователю без полномочий root, попробуйте sudo.

sudo chmod +x /bin/dash
sudo /bin/bash 

Или просто используйте su от пользователя без полномочий root

su -c 'chmod +x /bin/bash'
su -c '/bin/dash'

Вы сможете найти доступные оболочки в /etc/shells.