Permissions
安裝沒有可執行位的 bash 後鎖定
在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
.