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博客

相关文章:
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 …...
若依项目源码阅读
源码阅读 前端代码分析 代码生成器生成的前端代码有两个,分别是course.js用于向后端发送ajax请求的接口代码,另一个是index.vue,用于在浏览器展示课程管理的视图组件。前端的代码是基于vue3elementplus。 template用于展示前端组件别的标签…...
JVM知识点学习-1
学习视频:狂神说Java 类加载器和双亲委派机制 类加载器 作用:加载Class文件 流程:这里的名字car1。。在栈里面,但是数据在堆里面 类加载器的几个类型: 虚拟机自带的类加载器;启动类(根Boot…...
TypeScript和JavaScript区别详解
文章目录 TypeScript和JavaScript区别详解一、引言二、类型系统1、静态类型检查TypeScript 示例JavaScript 示例 2、类型推断TypeScript 示例JavaScript 示例 三、面向对象编程TypeScript 示例JavaScript 示例 四、使用示例1. 环境搭建2. 创建TypeScript项目3. 安装TypeScript插…...
RVO动态避障技术方案介绍
原文:RVO动态避障技术方案介绍 - 哔哩哔哩 我们在开发游戏的时候经常会遇到这样的问题,当我们寻路的时候,其它人也在寻路,如何避免不从其它人的位置穿过。这个叫做动态避障,目前主流的解决方案就是RVO。本节我们来介绍…...
Vue进阶之单组件开发与组件通信
书接上篇,我们了解了如何快速创建一个脚手架,现在我们来学习如何基于vite创建属于自己的脚手架。在创建一个新的组件时,要在新建文件夹中打开终端创建一个基本的脚手架,可在脚手架中原有的文件中修改或在相应路径重新创建…...
OGRE 3D----5. OGRE和QML事件交互
在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGR…...
ARIMA-神经网络混合模型在时间序列预测中的应用
ARIMA-神经网络混合模型在时间序列预测中的应用 1. 引言 1.1 研究背景与意义 时间序列预测在现代数据科学中扮演着越来越重要的角色。从金融市场的价格走势到工业生产的需求预测,从气象数据的天气预报到用电量的负荷预测,时间序列分析无处不在。传统的统计方法和现代深度学习…...
常见靶场的搭建
漏洞靶场 渗透测试(漏洞挖掘)切忌纸上谈兵,学习渗透测试(漏洞挖掘)知识的过程中,我们通常需要一个包含漏洞的测试环境来进行训练。而在非授权情况下,对于网站进行渗透测试攻击,是触及…...
[MacOS] [kubernetes] MacOS玩转虚拟化最佳实践
❓ 为什么不在MacOS本机安装呢?因为M系列芯片是Arm架构,与生产环境或者在本地调试时候,安装虚拟镜像和X86不同,造成不必要的切换环境的额外成本,所以在虚拟化的x86调试 步骤 & 详情 一: 安装OrbStack & 并配置…...
HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步
一、前言 Provide和Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,Provide和Consume摆脱参数传递机制的束缚,实现跨层级传递。 其中Provi…...
git 上传代码时报错
在上传代码时,显示无法上传 PS E:\JavaWeb\vue3-project> git push To https://gitee.com/evening-breeze-2003/vue3.git! [rejected] master -> master (non-fast-forward) error: failed to push some refs to https://gitee.com/evening-breeze-20…...
判断1456789876541是否为素数,是输出“是素数“,不是则输出“不是素数“
题目描述 判断1456789876541是否为素数,是输出"是素数",不是则输出"不是素数" 代码实现 int main() { long long n 1456789876541; //for (long long i 2; i < n; i)//数据量太大 for(long long i2;i<sqrt(n);i)//素数的优化 { if (n % i 0) …...
Flutter:封装发送验证码组件,注册页使用获取验证码并传递控制器和验证码类型
验证码:view import package:flutter/material.dart; import package:get/get.dart; import index.dart;class SendcodePage extends GetView<SendcodeController> {// 接收注册页面,传进来的手机号控制器,和发送验证码的类型final Tex…...
亚马逊IP关联是什么?
亚马逊不仅提供了广泛的商品和服务,也是许多企业和个人选择的电子商务平台。然而,与亚马逊相关的IP关联问题,特别是在网络安全和运营管理方面,经常成为使用亚马逊服务的用户和商家关注的焦点。通过了解亚马逊IP关联的含义、可能的…...
Electron + vue3 打包之后不能跳转路由
路由不跳转问题原因: 是因为electron需要将vue-router的mode调整为hash模式(两种写法) export default new Router({mode: hash, //这里history修改为hashscrollBehavior: () > ({y: 0}),routes: constantRouterMap, }) export default new createRouter({his…...
docker安装clickhouse副本集群
docker安装clickhouse副本集群 1、clickhouse副本集群搭建1.1、docker安装zookeeper集群1.1.1、zookeeper第一个节点安装1.1.2、zookeeper第二个节点安装1.1.3、zookeeper第三个节点安装1.1.4、zookeeper客户端命令 2、Clickhouse副本集群搭建2.1、clickhouse搭建2.2、验证集群…...
vue超过三行显示省略号和查看更多按钮
1、超过3行显示省略号和更多按钮,不超过3行正常显示; html: <div class"container"><div style"display: flex;"><div class"content"><div class"text-content" ref"textContentR…...
【软考速通笔记】系统架构设计师⑤——软件工程基础知识
文章目录 一、前言二、基础知识点2.1 软件危机2.2 软件生命周期 三、软件过程模型(论文)3.1 瀑布模型3.2 原型模型3.3 螺旋模型3.4 敏捷模型3.5 软件统一过程模型3.6 软件成熟度模型3.7 软件成熟度模型集成 四、需求工程五、软件测试5.1 根据程序执行状态…...
Qt 详解QRubberBand
文章目录 QRubberBand 简介前言 QRubberBand 的作用QRubberBand 的主要功能QRubberBand 的常用方法QRubberBand 的典型应用场景示例代码总结 QRubberBand 简介 前言 在 Qt 中,QRubberBand 是一个非常实用的控件,它通常用于图形界面中的“选择区域”功能…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
