当前位置: 首页 > article >正文

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.kler.cn/a/419105.html

相关文章:

  • 数据结构 (16)特殊矩阵的压缩存储
  • Vue 3 的双向绑定原理
  • 【C语言】扫雷游戏(一)
  • 会议直击|美格智能亮相2024紫光展锐全球合作伙伴大会,融合5G+AI共拓全球市场
  • 牛客--最长回文子串
  • 【传感器技术】第6章 压电式传感器
  • 桶排序(代码+注释)
  • webUI自动化(十)iframe切换
  • 【docker集群应用】Docker数据管理与镜像创建
  • Flutter:encrypt插件 AES加密处理
  • 10.请求拦截和响应拦截
  • Rust代写 OCaml代做 Go R语言 SML Haskell Prolog DrRacket Lisp
  • Jackson库--ObjecMapper
  • vue3 与 spring-boot 完成跨域访问
  • Maven java 项目,想执行verify阶段指令,通常需要配置哪些插件呢?
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-ops.py
  • Java知识及热点面试题总结(二)
  • 远程桌面协助控制软件 RustDesk v1.3.3 多语言中文版
  • 精准用户获取与私域流量运营:多商户链动 2+1 模式商城小程序的赋能策略
  • Linux内核编译流程(Ubuntu24.04+Linux Kernel 6.8.12)
  • spring boot 调用C#封装的DLL文件中的函数
  • 力扣3372.连接两棵树后最大目标节点数目I
  • 内网使用docker搭建librespeed测速网站
  • 挑战用React封装100个组件【004】
  • UaGateway:实现OPC DA和OPC UA的高效转换
  • FFmpeg一些常用的命令