Debian
無法 su 進入 root 預設 shell - Debian
我正在使用 Debian 9 伺服器。
通常我通過
ssh
普通使用者(例如user1
)訪問並su
進入root
,因為我禁用ssh
了進入root
。最近我正在設置一個 git-server,我在其中創建了一個git
包含該組的使用者git
並將他限制為git-shell
. 玩了一會兒,我像這樣添加user1
到組中git
:usermod -aG git user1
這工作正常,
user1
是組的成員user1
和git
. 最後我想撤消這個,所以我使用了:usermod -G user1 user1
此後不久,我失去了網際網路連接,不得不重新連接。我可以
ssh
進入user1
還好,但是使用su
訪問時root
,出現錯誤:user1@hostname:~$ su Password: Cannot execute git: No such file or directory user1@hostname:~$
我包含了關於 的資訊
git-shell
,因為我不知道還有什麼原因。希望這不是全部失去,有人可以幫助我重新獲得控制權。PS:沒有任何其他類似 root 的使用者,因此
sudo
無法正常工作,因為user1
“不在 sudoers 文件中”。PPS:我可以通過 VPS-login 重置
root
密碼,但我不太確定這是否會起作用或讓一切變得更糟。
僅在救援模式下解決:
- 啟動到“救援模式” - 可能在大多數 VPS 上可用
mount
適當的驅動nano /path/to/mounted/drive/etc/passwd
- 將根條目更改為
root:x:0:0:root:/root:/bin/bash
- 在沒有救援模式的情況下保存、退出和重新啟動
不同的方法如
user1@hostname: ~$ su -s /bin/sh
或者
user1@hostname: ~$ su -s /bin/sh -c /bin/sh
沒有用,只回復了同樣的錯誤資訊。
我(還沒有)找到原因,但根據@doneal24 的評論,我重新獲得了對系統的控制權。如果我可以澄清原因,我將提供詳細資訊 - 請參閱下面的編輯。
重現:我(偶然)發現了我是如何更改根 shell 的。根據ProGit的這個
chsh -s $(command -v git-shell) <user>
,我認為是啟用 git-shell 進行輸入。但是插入git
for<user>
會更改 root 的 shell。root@hostname ~ # chsh -s $(git init ./project1.git git-shell) git usage: git init [-q | --quiet] [--bare] [--template=<template-directory>] [--shared[=<permissions>]] [<directory>] chsh: Warning: git does not exist root@hostname ~ #
我可能誤解了 ProGit 上的資訊,因為這看起來很像我在 EDIT 下寫的。
EDIT1:請參閱下面的實際更改方式。
root@hostname ~# chsh root -s git chsh: Warning: git does not exist root@hostname ~#
將條目更改為
root@hostname~ # cat /etc/passwd | grep root root:x:0:0:root:/root:git root@hostname~ #
這很奇怪,就像
root@hostname ~# chsh root -s /bin/bash Password: chsh: PAM: Authentication failure root@hostname ~#
不管用。