После scp
- луг исправленный контузией bash
двоичный файл к openSUSE 12.2 Linux VM и замене оболочки входа в систему с ним, никакой пользователь не может зарегистрироваться на пути ssh
или консоль. Как оказалось, исполняемый бит потерялся во время передачи, несмотря на использование -p
переключатель.
Я пытался восстановить это путем монтирования файловой системы на хосте Xen Linux и выполнении chmod +x /mnt/usr/local/bin/bash
, но ситуация не улучшилась. Будет перезагрузка гостя справка VM?
Это - то, что я вижу на консоли:
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
.