首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从grub编辑/etc/passwd文件

从grub编辑/etc/passwd文件
EN

Unix & Linux用户
提问于 2016-05-09 13:06:16
回答 3查看 6.6K关注 0票数 2

我尝试在ubuntu上安装zsh ( 14.04)。当我切换到zsh时,我无法进入超级用户模式。

如果我做了su,它要求密码,并输入正确的密码,它说:

代码语言:javascript
复制
Cannot execute which zsh: No such file or directory

但是当我输入一个不正确的密码并按enter 4-5次时,它什么也不会显示.

在检查我的/etc/passwd文件时,它显示:

代码语言:javascript
复制
root:x:0:0:root:/root:which zsh

我试着编辑这个文件并保存,但是它显示了

代码语言:javascript
复制
Unable to save /etc/passwd

我试图通过grub将运行级别更改为1,但这会导致一个错误:

代码语言:javascript
复制
APCI PCC probe failed

我正在VirtualBox上运行Ubuntu。

EN

回答 3

Unix & Linux用户

发布于 2016-05-09 13:11:05

您应该从密码文件中删除which单词..。应该是这样的:

代码语言:javascript
复制
root:x:0:0:root:/root:/bin/zsh

其中/bin/zsh是zsh二进制文件的路径。

在当前配置中,登录进程试图执行which zsh,而该命令失败了。

另外,以根用户的身份编辑文件,例如使用sudo vim /etc/passwd,因为它是一个只能由根用户写的文件。

如果您不能sudosu,那么启动到恢复模式(在GRUB引导加载程序中选择Ubuntu高级选项,然后选择Ubuntu.(恢复模式),然后选择root/Drop到根shell提示符)。之后,将/文件系统重新装入读-写(mount -o remount,rw /),然后您可以编辑/etc/passwd文件的内容。在Ubuntu 16.04上测试了这个。

票数 1
EN

Unix & Linux用户

发布于 2016-05-10 03:55:00

如果您知道根密码,可以运行su -s /bin/bash来获得根bash。

sudo -s /bin/bash也应该工作,根据配置sudo的方式,您要么只需要知道自己的密码,要么不需要密码。

然后可以使用chsh -s /bin/bash将根的shell更改为bash。

顺便说一句,在任何unix系统上更改根的shell通常都是个坏主意。许多cron作业等都依赖于root的shell作为该操作系统的默认根shell,如果您更改它,它就会中断。

票数 0
EN

Unix & Linux用户

发布于 2016-05-09 13:37:25

请尝试sudo /etc/passwd并输入您当前登录的用户密码。

您还可以在/etc/shell中找到shell正确的路径。

若要检查当前外壳,请尝试回波$SHELL。

票数 -2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/282042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档