【linux】ubuntu 用户管理

server/2025/3/25 22:15:43/

目录

一、用户基本命令

1.1 添加新用户

1.2 切换用户

1.3 删除用户

1.4 修改用户密码

1.5 用户组的新建和删除

二、用户相关的文件

三、sudo权限的授权

3.1 sudo权限的授权

3.2 问题:sudo和su命令不能使用。

3.3 可以试试强制切换root。但是需要sudo可以使用。

3.4 忘记root密码:网上找的方法是进入单用户模式:

3.5 认证代理:用户两个终端 进入root


一、用户基本命令

1.1 添加新用户

1. root用户 添加 新用户
adduser  用户名2. 普通用户添加新用户
sudo adduser 用户名

  查看 /etc/passwd 文件

1.2 切换用户

【用户切换】
    su 用户:家目录不会切换
    su - 用户:家目录会切换
【用户分类】
    超级用户root:UID=0
    系统用户:UID=1~499
    普通用户:UID=500~65534

// 仅切换用户,所在目录不会切换
su 用户名
su root// 切换用户,并切换到用户的家目录
su - 用户名
su - root
su - zj//推出当前用户
exit

1.3 删除用户

注意:在某些Linux版本中用户虽然被删除了, 但是它的家目录却没有被删除,需要我们手动将其删除。

# 删除用户, 添加参数 -r 就可以一并删除用户的家目录了
$ sudo userdel 用户名 -r

1.4 修改用户密码

# passwd
# 修改当前用户
$ passwd# 修改非当前用户密码
$ sudo passwd 用户名# 修改root
$ sudo passwd root

1.5 用户组的新建和删除

默认情况下, 只要创建新用户就会得到一个同名的用户组, 并且这个用户属于这个组。一般情况下不需要创建新的用户组,如果有需求可以使用 groupadd添加用户组, 使用 groupdel删除用户组。

由于普通用户没有添加删除用户组权限,因此需要在管理员(root)用户下操作,或者在普通用户下借助管理员权限完成该操作。

# 基于普通用户创建新的用户组
$ sudo groupadd 组名# 基于普通用户删除已经存在的用户组
$ sudo groupdel 组名

二、用户相关的文件

/etc/passwd        用户信息管理
/etc/shadow        用户密码,加密后的        
/etc/sudoers       sudo权限的授权管理
/etc/group         用户组信息管理


三、sudo权限的授权

3.1 sudo权限的授权

编辑/etc/sudoers文件。

编辑方法

  • 推荐使用visudo:自动检查语法错误,防止错误配置导致sudo不可用。
  • 直接编辑(谨慎):需用chmod修改权限,编辑后恢复权限为440。建议先进入root用户。
sudo visudo
// 下面是 /etc/sudoers 文件里,定义的root用户权限
root    ALL=(ALL:ALL) ALL第一个ALL:表示该规则适用于所有主机。这意味着root用户可以从任何主机登录并行使这些权限。第二个ALL:出现在括号内,表示root用户可以切换到系统中的任何用户。第三个ALL:同样出现在括号内,跟在第二个ALL后面,由冒号分隔,表示root用户可以切换到系统中任何用户组。第四个ALL:表示root用户可以执行系统中的任何命令。

 让普通用户执行命令时想root一样,不需要加sudo。/etc/sudoers 如下配置:

username ALL=(ALL) NOPASSWD: ALL

或者

先切换到root,修改/etc/passwd文件中的
linaro:x:1000:1000:linaro,,,:/home/linaro:/bin/bash将其改为
linaro:x:0:1000:linaro,,,:/home/linaro:/bin/bash也就是修改linaro用户的UID为0让其拥有与root用户相同的权限。
修改完后需要重启一下,或者注销当前用户重启登陆一下

3.2 问题:sudo和su命令不能使用。

由于我直接用普通用户加sudo,直接修改了/etc/sudoers的权限为664。并在该文件中添加了普通用户和root一样的权限配置。

由于root用户没提前切换,导致sudo 和 su命令都用不了的情况,root也切换不了。/etc/sudoers 的文件权限也chmod不了。

上面就导致超级用户权限的管理崩溃。因为这个权限要检查/etc/sudoers的权限要是不可修改的。

所以我就想着用其他方法切换到root用户,重新修改/etc/sudoers的文件权限为只读的。

方法1:进入grub界面修改,利用单用户超级权限,修改/etc/sudoers的权限。

方法2:打开两个终端,进行认证代理的机制。

两种方法,下面有详细操作。

3.3 可以试试强制切换root。但是需要sudo可以使用。

如果su不能进入root用户,可以试试下面命令。

sudo su

3.4 忘记root密码:网上找的方法是进入单用户模式:

忘记root用户密码,可以重启设置。以下是详细步骤。

【进入grub页面 修改root密码】1.在ubuntu开机进度条的时候,长按 eac\shift\f12. 具体按哪个看进度条下面的提示。2.然后回车选择 高级选项ubuntu3.e选择(不要按回车) recovery mode4.ro recovery nomodeset ----> quiet splash rw init=/bin/bash6.ctrl+x 退出5.passwd   // 修改root密码 不需要root原始密码。

3.5 认证代理:用户两个终端 进入root

这个是针对 3.2 情况下,sudo和su崩溃,/etc/sudoers权限无法修改,root用户切换不了的情况 的解决办法。

1、打开两个终端。

2、在第一个终端中,获取该shell终端的PID。

echo $$    # 获取当前终端 PID

3、在第二个终端运行以下命令

启动一个认证代理,允许你在第一个终端以超级用户的权限运行命令。这样就可以修改/etc/sudoers的权限为只读的了,进而就可以使用sudo命令了。

pkttyagent --process <PID>        // PID:第一个终端的PID

4、第一个终端修改/etc/sudoers 权限

pkexec chmod 440 /etc/sudoers

修改好/etc/sudoers的权限,那么sudo就可以正常使用了。所以在修改/etc/sudoers权限时,先进入root模式。


http://www.ppmy.cn/server/179074.html

相关文章

第三章 | 初识 Solidity:开发环境搭建 第一个智能合约{介绍篇}

&#x1f4da; 第三章 | 初识 Solidity&#xff1a;开发环境搭建 & 第一个智能合约 ——从写下第一行代码&#xff0c;开启智能合约开发之旅&#xff01; ✅ 本章导读 前两章我们讲清了区块链和智能合约的基础原理&#xff0c;现在—— 是时候动手实战&#xff01; 你将完…

开发中常用的设计模式 用法及注意事项【面试题】

常见的设计模式&#xff1a;单例模式、工厂模式、观察者模式、发布-订阅模式、装饰器模式、策略模式、代理模式、模块模式等 React中的高阶组件&#xff08;装饰器模式&#xff09;、Vue的事件总线&#xff08;发布-订阅模式&#xff09; 一、 单例模式 (Singleton) 用途&…

[React 进阶系列] 组合组件 复合组件

[React 进阶系列] 组合组件 & 复合组件 今天写个人项目练手的时候搜到了一个比价有趣的实现&#xff0c;于是用了一下&#xff0c;发现这个 concept 不是特别的熟&#xff0c;于是上网找了下&#xff0c;返现了一个叫 复合组件(compound components) 的概念。搜索了一下后…

RISC-V: 固件与操作系统引导 | eg OpenSBI | 借助AI注释项目代码

引入&#xff1a;计算机没有黑魔法 例如我们都可以&#xff0c;通过指令来查看我们计算机的信息 “Everything is a State Machine” 在许多状态之间不断切换程序就运行了起来Makefile 也是程序&#xff1b;它也是状态机程序不好读的话&#xff0c;我们还可以调试它&#xff0…

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式&#xff1a;预训练Fine-Tuning GPT2的训练范式&#xff1a;预训练Prompt predict &#xff08;zero-shot learning&#xff09; GPT3的训练范式&#xff1a;预训练Prompt predict &#xff08;few-shot learning&#xff09; GPT2的性能太差&#xff0c;新意高&…

国产开发板—米尔全志T113-i如何实现ARM+RISC-V+DSP协同计算?

近年来&#xff0c;随着半导体产业的快速发展和技术的不断迭代&#xff0c;物联网设备种类繁多&#xff08;如智能家居、工业传感器&#xff09;&#xff0c;对算力、功耗、实时性要求差异大&#xff0c;单一架构无法满足所有需求。因此米尔推出MYD-YT113i开发板&#xff08;基…

Unity音频混合器如何暴露参数

音频混合器是Unity推荐管理音效混音的工具&#xff0c;那么如何使用代码对它进行管理呢&#xff1f; 首先我在AudioMixer的Master组中创建了BGM和SFX的分组&#xff0c;你也可以直接用Master没有问题。 这里我以BGM为例&#xff0c;如果要在代码中进行使用就需要将参数暴露出去…

linux去掉绝对路径前面部分和最后的/符号

使用basename命令 basename命令用于获取路径中的文件名部分。它会自动去除路径前面的目录部分和最后的/符号。示例如下&#xff1a; path"/a/b/c" filename$(basename "$path") echo "$filename"path"/a/b/c/" filename$(basename &…