Permissions

安裝沒有可執行位的 bash 後鎖定

  • September 30, 2014

在openSUSE 12.2 Linux VM 中scp使用 shellshock 更新檔bash二進製文件並用它替換登錄 shell 後,任何使用者都無法通過ssh控制台或控制台登錄。事實證明,儘管使用了-p開關,但可執行位在傳輸過程中失去了。

我嘗試通過在 Linux Xen 主機上掛載文件系統並執行 來修復此問題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符號連結也無濟於事。

您將不得不重新啟動。從虛擬機管理程序到來賓正在使用的文件系統的文件權限更改不會被來賓檢測到。

將來在進行此類“更新”時,會為您正在更新的伺服器打開一個單獨的 shell 會話,以防萬一。

看起來您可以訪問伺服器。您可以嘗試多種方法。

您應該有一個可以工作的 ssh 客戶端,嘗試使用 ssh 來修復權限,或者使用不同的 shell 登錄。

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.

引用自:https://serverfault.com/questions/632241