更改Ubuntu用户名带来的一次惊心动魄的经历

2023-10-10 00:48

本文主要是介绍更改Ubuntu用户名带来的一次惊心动魄的经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先指出:新人在Ubuntu系统下(我使用的是12.04LTS版本)更改用户名、普通用户名有一定的风险,操作需谨慎。这是我的亲身经历带来的感悟,期间惊心动魄,在快要放弃的时候,我使用了我的最后一根稻草,认真的阅读了Recovery mode的操作说明,最终成功复原了我的错误操作,让我的Ubuntu系统呈现出问题前的状态。接下来讲我的经历,以供后来者少走弯路。

1 问题出现

由于我最近需要用一台专门的机器跑Ubuntu下面的程序,我就把旁边闲置多年的台式机用上了。两年前我的师弟在上面装了单系统---Ubuntu系统,我就接着他安装的系统使用。但有一个不爽的感觉是,电脑的用户名时师弟的英文名david,我就想把用户名改为我的英文名robert。人都有一个共性是,想让自己的使用的东西处处体现出自己的特色。我也不例外。于是,在Google上面搜索更改用户名的方法,经过比较鉴别,我认为一个比较好的描述该方法的blog为http://my.oschina.net/arvinjones/blog/139480,其中的方法为(摘录):

  1)打开一个终端,输入 sudo su转为root用户。 注意,必须先转为root用户!!! 
  2)gedit /etc/passwd ,找到代表你的那一行,修改用户名为新的用户名。 注意:只修改用户名!后面的全名、目录等不要动! 
  3)gedit /etc/shadow,找到代表你的那一行,修改用户名为新用户名 
  4)gedit /etc/group,你应该发现你的用户名在很多个组中,全部修改! 
  完毕,修改的时候要格外小心,不要打错一个字母。修改完,保存,重启

我就按照该方法的步骤操作。但步骤到为什么,我没严格按照该博客的第1)步方法说的那样操作,我使用的是sudo gedit /etc/passwd命令,也就是说没有转为root用户,而是获取root权限来更改passwd的内容。我顺利完成了第2)步,Terminal下的用户名也变成了robert。可正当我为此沾沾自喜的时候,噩梦开始了。我无论采用什么方法都不能完成3)步的操作,更别提4)了。提示说是密码错误。我就想出来了,改后的名字robert并没有设置上面密码,我就不输任何密码试试,结果任然不成功。我用david的密码不行,用空密码也不行,这可把我难为住了。怎么办?重新启动。重新启动后的用户登录名为david,这证明我修改用户的任务并没有完成,由于3)和4)没有做。情况进一步恶化,我在登录界面的david下输入先前的david密码时,提示密码错误,登录不了。这到底是什么情况?难道我要重新装系统不行?david用户名就这样凭空消失了吗?我只是简简单单的更改了/etc/passwd文件的内容而已

2 求助于Ubuntu系统的recoverymode模式

我就在Google里面上节出现的问题,果然一位也遇到了与我类似的情况,在修改用户名的时候仅仅修改了/etc/passwd中的用户名。他采用Ubuntu系统下的recovery mode解决和复原了他的问题。他的博文地址是http://www.cnblogs.com/strider/articles/2018648.html。更改用户名的出发点虽然不同,但最后出现的问题类似。

我就重新启动Ubuntu就入Recoverymode(关于如何重新启动后进入Recovery mode,请参考https://wiki.ubuntu.com/RecoveryMode),在该模式下就运行在root用户下面,于是我就迫不及待地要将/etc/passwd文件改回原来的样子,即将robert改回david。我利用的是vi编辑器,调用该编辑器的方法如下:

$vi /etc/passwd

注意,vi默认进入的模式是default模式,这是你可以利用上下左右箭头按钮将光标转移到你要修改的字符下面,我将光标移动到了robert单词下的r下面;在默认模式下,按x即可删除相应的字符,我通过该按钮删除了robert;接下来需要插入字符,在默认模式下,你输入i就会进入编辑模式,i表示的是在当前字符的前面插入新的字符,于是我就在原来robert的地方插入了david,将文件内容复原到问题前的状态;最后,按esc见退出到命令模式,按shift+:进入到最底端,输入wq!,表示保存更改并退出。

可是,terminal提示说,/etc/passwd是readonly,我无权进行更改。

3 借助先前建立的另外一个用户登录

我无语了,在实在没有办法的情况下,我请教了梁师弟,问他会不会使用Ubuntu系统,他说不会,他给推荐了坐在他旁边赖师弟,让他来帮我。他整了半天,各种方法都试了,还是不成功。他问我是否还有其他用户名可以登录,我说有。我留了一手,就是为了防止出现这种情况的,我在做更改用户事前,就新建了一个用户chgzhi,就是以防万一。

顺利进入Ubuntu,利用chgzhi用户名。于是师弟和我就试着在用户名为chgzhi的terminal下来更改/etc/passwd文件,我们的命令是这样的:

chgzhixxxx$sudo gedit /etc/passwd

提示输入密码,输入密码后,提示密码错误。我所记忆的所有关于Ubuntu系统的密码都试了一遍,还是提示密码错误。我泪崩了,师弟也蒙了。师弟说,他也没办法了,就离开了。我不甘心,继续寻找解决方案。

4 认真阅读Recovery mode介绍,问题解决

我在想是不是使用recoverymode上面没到位。于是重新认真阅读https://wiki.ubuntu.com/RecoveryMode中的介绍,我找到了这样一句话:

  The root partition is mounted read-only.To mount it read/write, enter the command

   mount -o remount,rw/

我安装上面的描述,授予recoverymode下root用户以读写权限。最终问题顺利解决。

5 总结

通过上面的经历,我认为,在Ubuntu下面最后学会一种编辑器,例如vi。在Recovery mode的情况下,它能够帮助你编辑和修改你曾经操作错误的文件。而gedit之类的图形化的编辑器在recovery mode下是不会起作用的。还有就是,在搜索到相关的知识介绍时,最好认真的阅读,而不要浅尝辄止,就像我没有认真阅读recovery mode 介绍那样。还有网络上blog的介绍的解决方案介绍比较简略,它们本身并不是self-contained,可能会漏掉背景知识,最好在借鉴它们时自己多动动脑筋。

这篇关于更改Ubuntu用户名带来的一次惊心动魄的经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176748

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://