Linux命令进阶·如何切换root以及回退、sudo命令、用户/用户组管理,以及解决创建用户不显示问题和Ubuntu不显示用户名只显示“$“符号问题

目录

1.  root用户(超级管理员)

1.1  用于账户切换的系统命令——su

1.2  退回上一个用户命令——exit

1.3  普通命令临时授权root身份执行——sudo

1.3.1  为普通用户配置sudo认证

2.  用户/用户组管理

2.1  用户组管理

2.2  用户管理

2.2.1  创建用户:useradd [-g -d] 用户名

2.2.2  删除用户:userdel [-r] 用户名

2.2.3  查看用户所属组:id [用户名]

2.2.4  修改用户所属组:usermod -aG 用户组 用户名

3.  用户管理出现的相关问题解决

3.1  创建用户不显示问题

3.2  su: 警告:无法更改到 /home/test 目录: 没有那个文件或目录

3.3  使用 -m 后删除不掉创建的目录

3.4  Ubuntu不显示用户名,只显示"$“符号,回退键会变为”^H"

3.5  userdel: user dky1 is currently used by process 61754


1.  root用户(超级管理员)

        无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。在Linux系统中,拥有最大权限的账户名为:root(超级管理员),而我们平常使用的账户是普通的用户。

        root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。

  • 使用普通用户在根目录下创建文件夹:

  • 切换到root用户后,继续尝试:

普通用户的权限,一般在其home目录内不受限的

一旦出了home目录,大多数地方,普通用户仅有只读和执行权限,无修改权限

1.1  用于账户切换的系统命令——su

功能:用于账户切换的系统

语法:su [-] [用户名]

  • -: 符号是可选的,表示是否在切换用户后加载环境变量,建议带上
  • 用户名:表示切换的用户,也可以省略,省略表示切换到root

        省略用户名:

1.2  退回上一个用户命令——exit

  • 切换用户后,可以通过exit命令退回上一个用户

  • 也可以使用快捷键:Ctrl+d

  • 使用普通用户,切换到其他用户需要输入密码,如切换到root用户
  • 使用root用户切换到其他用户,无需密码,可以直接切换

1.3  普通命令临时授权root身份执行——sudo

        我们可以通过su命令切换到root得到最大权限,但是不建议长期使用root用户,避免带来系统损伤。

功能:为普通命令授权,临时root身份执行

语法:sudo 其他命令

        在其他命令之前,带上sudo,即可为这一条命令临时赋予root授权,但并不是所有的用户,都有权利使用sudo,我们需要为普通用户配置sudo认证。

1.3.1  为普通用户配置sudo认证

        正常情况下,我们使用sudo命令,需要输入密码验证才能正常使用:

        如何跳过密码验证这一步呢?切换到root用户,执行visudo命令,会自动通过vi编辑器打开:/etc/sudoers,在文件最后添加:

用户名 ALL=(ALL)        NOPASSWD:ALL

        其中最后NOPASSWD:ALL表示使用sudo命令,不需要输入密码,然后通过低线命令模式输入:wq保存:

        切换回普通用户,执行命令,可以看到不需要再输入密码验证:

2.  用户/用户组管理

        Linux系统中可以:配置多个用户、配置多个用户组、用户可以加入多个用户组中。

        Linux中关于权限的管控级别有2个级别,分别是:

  • 针对用户的权限控制
  • 针对用户组的权限控制

2.1  用户组管理

 以下命令需要root用户执行:

  • 创建用户组:groupadd 用户组名
  • 删除用户组:groupdel 用户组名

2.2  用户管理

以下命令需要root用户执行:

2.2.1  创建用户:useradd [-g -d] 用户名

  • -g:指定用户的组。不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已存在同名组,必须使用-g
  • -d:指定用户HOME。不指定,HOME目录默认在:/home/用户名

        首先,我们现在 /home 下创建一个目录 myuser:

        创建一个用户组 mydky:

        创建用户,并通过 su 命令切换到用户,通过 pwd 查看路径:

        这里出现一个问题Ubuntu不显示用户名,只显示"$“符号,下面3.4小节说解决方法。

完整:

2.2.2  删除用户:userdel [-r] 用户名

  • -r:删除用户的HOME目录。不使用-r,删除用户时,HOME目录保留

        上面是直接删除dky1,我们可以看见myuser还被保留。

        当我们使用 -r 时,首先我们通过useradd - m 创建一个qwer用户:

         然后使用userdel -r 我们会发现,创建的用户qwer被删除了:

2.2.3  查看用户所属组:id [用户名]

  • 用户名:被查看的用户,如果不提供则查看自身

不提供用户名,查看自身:

使用id 用户名:

2.2.4  修改用户所属组:usermod -aG 用户组 用户名

  • 将指定用户加入指定用户组

        如下图蓝色部分表示,将用户plm,放到mydky用户组内,可以通过id plm查看其所属的组,如黄色部分:

3.  用户管理出现的相关问题解决

3.1  创建用户不显示问题

        需要注意的是,在ubuntu系统中,使用useradd会出现以下这种情况:

        我们明明已经创建了用户,并且显示已存在,但是在home目录下是没有显示的,解决方法使用useradd -m来进行实现:

        网上找了一下原因,说是因为在/etc/login.defs中的CREATE_HOME被设置为no了。(这里最好还是不要去更改文件了)

        通过man useradd文档可以看见-m可以再系统不允许创建主用户目录的情况下创建主用户目录,演示如上图。

3.2  su: 警告:无法更改到 /home/test 目录: 没有那个文件或目录

        这里算是上个问题的延伸,当我们使用useradd创建用户时,想要通过:

su -

        切换用户会发现: 

        那是因为我们 /home下根本就不显示 test:

        解决方法就是加 -m

3.3  使用 -m 后删除不掉创建的目录

        在使用 -m 解决创建用户不显示的问题后,会发现当你想删除创建的用户时,会发现无法删除了,虽然使用userdel提示test不存在,但是查找会发现其还在home目录下:

        这里我们可以使用 rm -rf进行删除:

3.4  Ubuntu不显示用户名,只显示"$“符号,回退键会变为”^H"

        这里正常情况下应该是:

        但此时确只有$号:

        解决方法切换到root账户,输入命令:

vim /etc/passwd

        对相关文件进行修改,不过修改前,我们需要先进行一下文件备份,以免出错:

方法一:复制文件

        使用 cp 命令复制文件是备份文件的简单方法。例如,您可以使用以下命令将 /etc/passwd 文件复制到当前目录中:

cp /etc/passwd passwd.bak

  • /etc/passwd 文件:这个文件包含系统中所有用户的基本信息,如用户名、密码(加密形式)、UID、GID、用户信息和默认的用户目录等。它是一个关键的系统文件
  • passwd.bak:这是目标文件的名称,它是 passwd 文件的备份副本,通常会存放在当前工作目录中。

 使用如下命令检查是否备份成功:

cat /etc/passwd// 该命令将显示 passwd.bak 文件的内容,其中包含与 /etc/passwd 相同的用户帐户信息。

方法二:创建归档文件

        使用 tar 命令创建归档文件是备份多个文件或整个目录的一种简单方法。例如,您可以使用以下命令将 /etc 目录打包成一个压缩文件:

tar -czf etc_backup.tar.gz /etc

方法三:使用版本控制系统

        使用版本控制系统(如 Git 或 SVN)来管理文件更改历史记录并创建备份是一种良好的做法。这样可以轻松地跟踪文件更改,并且在需要恢复之前的版本时更加方便。


        此时我们可以使用:

vim /etc/passwd

        这里需要安装好vim,否则会出现:

        可以通过如下命令进行安装:

apt install vim

        此时在输入就可以进入:

        找到最下方如上图箭头指向,进入插入模式进行修改,修改完如下:

        进入底层命令模式保存退出:

如果对于vim相关命令不熟悉可以看:

Linux命令进阶·vi\vim编辑器详细命令介绍_linux实验6:vi 编辑器进阶-CSDN博客

        这样在通过su命令进入发现问题解决了:

3.5  userdel: user dky1 is currently used by process 61754

        出现上述情况的根本原因在于切换回 root 用户之后,dky1用户还被某个进程占用。

        解决方法,再返回前使用:

ctrl+d

        把dky1的终端关掉就行了: 

        如果已经返回直接把终端关掉重开就行了。

Linux命令进阶·vi\vim编辑器详细命令介绍_linux实验6:vi 编辑器进阶-CSDN博客

Linux常用命令详细解析(含完整命令演示过程)_linux常用命令演示-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zero to JupyterHub with Kubernetes中篇 - Kubernetes 常规使用记录

前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 参考&…

《Python基础》之Python中可以转换成json数据类型的数据

目录 一、JSON简介 JSON有两种基本结构 1、对象(Object) 2、数组(Array) 二、将数据装换成json数据类型方法 三、在Python中,以下数据类型可以直接转换为JSON数据类型 1、字典(Dictionary&#xff09…

若依项目源码阅读

源码阅读 前端代码分析 代码生成器生成的前端代码有两个,分别是course.js用于向后端发送ajax请求的接口代码,另一个是index.vue,用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…

C#tabcontrol如何指定某个tabItem为默认页

// Selects tabPage2 using SelectedTab.this.tabControl1.SelectedTab tabPage2; 参考链接 TabControl.SelectedTab 属性 (System.Windows.Forms) | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.tabcontrol.selectedtab?viewnetfr…

文件比较和文件流

文件比较和文件流 一、文本比较工具 diff1.基本用法1.1输出格式 2.常用选项 二、文件流1.文件的打开模式2.文件流的分类ifstreamofstreamfstrem区别 3.文件流的函数1. 构造函数2. is_open 用于判断文件是否打开3. open4. getline5. close6. get()7. read8. write9. put10. gcou…

【网络篇】HTTP知识

键入网址到网页显示,期间发生了什么? 浏览器第一步是解析URL,这样就得到了服务器名称和文件的路径名,然后根据这些信息生成http请求,通过DNS查询得到我们要请求的服务器地址,然后添加TCP头、IP头以及MAC头&…

【解决安全扫描漏洞】---- 检测到目标站点存在 JavaScript 框架库漏洞

1. 漏洞结果 JavaScript 框架或库是一组能轻松生成跨浏览器兼容的 JavaScript 代码的工具和函数。如果网站使用了存在漏洞的 JavaScript 框架或库,攻击者就可以利用此漏洞来劫持用户浏览器,进行挂马、XSS、Cookie劫持等攻击。 1.1 漏洞扫描截图 1.2 具体…

互联网基础

TCP/IP协议(协议组) 分层名称TCP/IP协议应用层HTTP,FTP,mDNS,WebSocket,OSC...传输层TCP,UDP网络层IP链路层(网络接口层)Ethernet,Wi-Fi... 链路层(网络接口层) 链路层的主要作用…

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

hdlbits系列verilog解答(Exams/m2014 q4d)-89

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 本节实现以下电路。 模块声明 module top_module ( input clk, input in, output out); 思路: 它的输入是一个组合逻辑异或门,将输入和输出异或后输入D触发器,这意味着输出与历史输出及当前输入都有关系,…

Cesium K-means自动聚合点的原理

Cesium K-means自动聚合点的原理 Cesium 是一个开源的 JavaScript 库,用于在 Web 环境中创建 3D 地球和地图应用。它能够处理地理空间数据,并允许开发者对大规模的地理数据进行可视化展示。在一些应用中,尤其是当处理大量地理坐标点时&#…

Kafka如何保证消息可靠?

大家好,我是锋哥。今天分享关于【Kafka如何保证消息可靠?】面试题。希望对大家有帮助; Kafka如何保证消息可靠? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性,主要包…

yolov5 解决:export GIT_PYTHON_REFRESH=quiet

当我们在第一次运行YOLOv5中的train.py程序时:可能会出现以下报错: This initial warning can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values: - quiet|q|silen…

【Linux】进程控制-----进程替换

目录 一、为什么要进行进程替换: 二、进程替换的原理: 三、exec家族: 1、execl: 2、execlp: 3、execv: 4、execvp: 5、execle和execve ​编辑 putenv: 一、为什么要进行进程…

基于hexo框架的博客搭建流程

这篇博文讲一讲hexo博客的搭建及文章管理,也算是我对于暑假的一个交代 !!!注意:下面的操作是基于你已经安装了node.js和git的前提下进行的,并且拥有github账号 创建一个blog目录 在磁盘任意位置创建一个…

Git远程仓库操作

文章目录 远程仓库连接Gitee克隆代码 多人协同问题说明 🏡作者主页:点击! 🤖Git专栏:点击! ⏰️创作时间:2024年12月1日13点10分 远程仓库 Git 是分布式版本控制系统,同一个 Git …

新能源汽车充电基础设施短板问题多,如何实现高效、综合、智能化管理?

随着城市经济的发展,人民生活水平的提升,新能源汽车保有量快速增长,而日益增长的新能源汽车需求与充电基础设施建设不平衡的矛盾日益突出。由于停车泊位充电基础设施总量不足、布局待优化、利用效率低、建设运营存在短板问题等原因&#xff0…

【element-tiptap】导出word

前言:前面的文章 【element-tiptap】导入word并解析成HTML 已经介绍过如何在 element-tiptap 中导入 word。这篇文章来探究一下怎么将编辑器的内容导出成word (一)创建菜单项 1、图标 首先上 fontawesome 这个网站上找一个合适的图标&…

理解Java集合的基本用法—Collection:List、Set 和 Queue,Map

本博文部分参考 博客 ,强烈推荐这篇博客,写得超级全面!!! 图片来源 Java 集合框架 主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合(单列…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…