AGa*_*yer 3 shell login root zsh
很奇怪,从bash切换到zsh后,无法访问root。
在以普通用户(用户名是normalusername
)身份登录后,我通常使用“su”以 root 身份登录,但权限较少。它总是很好。但是在将 root shell 从 bash 切换到 zsh 后,当我尝试通过 su 登录时,我得到:
normalusername@(none):~$ su
Password: (enter the correct password)
Cannot execute zsh: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当我从我的 Mac 通过 ssh 直接访问 root 时,我得到:
localhost:~ myname$ ssh -lroot 106.186.120.20
root@106.186.120.20's password: (enter the correct/incorrect password)
Permission denied, please try again.
Run Code Online (Sandbox Code Playgroud)
无论我输入的密码是否正确,它都会一次又一次地出现。
所以我故意从普通用户那里输入了错误的密码“su”,我得到了:
normalusername@(none):~$ su
Password: (entered a wrong password and pressed enter)
(pressed enter)
su: Authentication failure
Run Code Online (Sandbox Code Playgroud)
输入错误的密码后,我什么也没看到,我输入了enter两次,然后得到了su: Authentication failure
结果。
我试了很多次,结论是:
这似乎表明我不仅忘记了“正确的密码”。但是我怎么能访问root呢?
输入/etc/passwd
是
root:x:0:0:root:/root:zsh
Run Code Online (Sandbox Code Playgroud)
llu*_*lua 10
试试:cd /usr/bin; su
。由于您没有给出 zsh 的绝对路径。su
正在检查PWD
. 更改到zsh
存在的目录将适用于某些系统。一个例子:
% su
Password:
su: zsh: No such file or directory
% cd /usr/local/bin
% su
Password:
# print $OSTYPE
freebsd10.0
#
Run Code Online (Sandbox Code Playgroud)
您的输入/etc/passwd
是
Run Code Online (Sandbox Code Playgroud)root:x:0:0:root:/root:zsh
这是一个无效条目:shell 必须是可执行文件的完整路径,登录程序不执行 $PATH 查找。
您将无法通过正常方式登录 root 帐户。您可以使用 sudo 来调用命令,例如sudo vipw
,如果您的帐户具有 sudo 权限。这是绕过目标帐户中的登录外壳设置的唯一常用方法。
如果您不是 sudoer,您可能已经将自己锁定在 root 帐户之外。您需要控制台访问权限才能修复系统。以单用户模式启动(请参阅如何以系统管理员 (root) 身份运行命令)并编辑/etc/passwd
以包含
root:x:0:0:root:/root:/bin/zsh
Run Code Online (Sandbox Code Playgroud)
(在您的系统上使用正确的 zsh 路径)。
一些管理员设置了一个UID 为 0的toor 帐户,但使用不同的 shell(通常是静态链接的二进制文件,例如sash,以允许 root 登录,即使在配置错误的情况下,例如这种配置(最常见的错误配置是损坏的共享库)在普通外壳中)。
为避免将来出现此类问题,请使用该chsh
命令更改用户的 shell,而不是/etc/passwd
直接编辑。如果您必须编辑/etc/passwd
或其他一些涉及获得 root 访问权限的文件,请在终端中打开 root shell,并且在确认您仍然可以以 root 身份登录之前不要关闭它。
归档时间: |
|
查看次数: |
15539 次 |
最近记录: |