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

Linux的命令——关于操作用户及用户组的命令

目录

1.Linux的命令格式

2.用户与用户组管理

2.1用户管理

添加用户

设置用户密码

删除用户

修改用户

2.2用户组管理

新增用户组

删除用户组

修改用户组属性

用户组切换

用户组管理

 用户切换

1. su

2.sudo


1.Linux的命令格式

Linux系统中几乎所有操作,如文件、账户、软件包的管理、磁盘分区、性能监控、网络配置等都可通过命令实现,实现这些功能的命令大多遵循如下格式:

命令名称  [选项]   [命令作用的对象]

命令的选项分为短选项和长选项;短选项可组合使用,而长选项只能单独使用。 

2.用户与用户组管理

Linux是一个多用户、多任务的分时操作系统,在Linux主机上可同时登陆多个用户,为了对用户的状态进行追踪,并对其可访问的资源进行控制,每名用户在使用Linux之前,必须向系统申请一个账号,并设置密码,之后才能登陆并访问系统资源。

Linux用户可以分为两大类:超级用户和普通用户。

其中超级用户拥有操作Linux系统的所有权限。

2.1用户管理

添加用户

添加用户的命令为 useradd ,使用该命令可在系统中创建一个新账号。useradd命令的格式如下:

useradd [选项]  用户名

useradd命令可通过一些选项,在创建用户的同时为新增的账号设置一些属性,若不设置除用户名外的其他属性,则这些属性由系统设置为默认值。

选项说明
-d指定用户登录时的目录
-c指定账户的备注文字
-e指定账号的有效期限
-f缓冲天数,密码过期时在指定天数后关闭该账号
-g指定用户所属组
-G指定用户所属的附加用户组
-m自动建立用户的登录目录
-r创建系统账号
-s指定用户的登录shell
-u指定用户的用户ID,若添加-o选项,则用户ID可与其他用户重复

 例:

#创建新用户bxg,指定用户主目录为/usr/bxg并自动创建登录目录

[root@localhost ~]# useradd  -d  /usr/bxg  -m bxg

#创建新用户 itcast ,设置其用户id为876

[root@localhost ~]# useradd  itcast  -u  876

Linux系统中的用户名和用户ID都是唯一的,其中用户名由字母、数字、下划线组成,且不能以数字开头。 

设置用户密码

通过passwd命令为用户设置密码,其格式如下:

passwd  [选项]   用户名

常用选项:

选项说明
-l锁定密码,锁定后密码无效,无法登录(新用户默认锁定)
-d删除密码,仅系统管理员可使用
-S列出密码相关信息,仅系统管理员可使用
-f强行执行

#为新用户bxg设置密码

[root@localhost ~]#  passwd  bxg

更改用户bxg的密码。

新的密码:

重新输入新的密码:

passwd:  所有的身份验证令牌已经成功更新。

Linux系统建议用户密码至少为8个字符,若没有8个字符会打印警告信息,此警告不会对用户账户的使用造成影响。用户可再次输入密码并确认密码,完成密码设置。

密码信息存储在/etc的shadow文件中。

删除用户

若用户不再使用,可用userdel 命令将该用户从系统删除,出删除用户账户外,userdel命令还可以删除与指定用户相关的文件和信息。

userdel  [选项]  用户名

选项说明
-f强制删除用户,即便该用户为当前用户
-r  删除用户的同时,删除与用户相关的所有文件

#删除用户bxg及相关文件

[root@localhost ~]#  userdel  -r  bxg

修改用户

usermod命令用户修改用户信息。

usermod  选项   参数

在使用usermod命令修改用户信息的时候,必须先确认该用户没有在电脑上执行任何程序。usermod命令的常用选项:

选项说明
-c修改用户账号的备注信息
-d修改用户的登录目录
-e修改账号的有效期限
-f修改缓冲天数,即修改密码过期后关闭账号的时间
-g修改用户所属组
-G修改用户所属的附属组
-l修改用户账号名称
-L锁定用户密码,使密码失效
-s修改用户登录后使用的Shell
-u修改用户ID
-U解除密码锁定

# 修改用户bxg的用户id为678

[root@localhost ~]#  usermod  -u 678  bxg

2.2用户组管理

为了方便对用户的管理,Linux系统设置了用户组的概念,一般将权限相同的用户放在同一个用户组中。

新增用户组

增加用户组的方式有两种:一种由系统默认创建——在创建新用户时,若无特别指定,系统会为新用户创建与其同名的用户组;另一种是使用groupadd命令主动添加,该命令的格式如下:

groupadd  [选项]   参数

选项说明
-g指定新建用户组的组ID
-r创建系统用户组,组ID取值范围为1~499
-o允许创建组ID已存在的用户组

# 创建一个用户组 group1 ,指定其组ID为550

[root@localhost ~]#  groupadd  -g  550  group1

Linux系统将用户组信息存储于 /etc/group 文件中。

删除用户组

使用 groupdel 命令可以删除多余的用户组,该命令的格式如下:

groupdel  用户组名

例: 

# 删除用户组 group1 ,指定其组ID为550

[root@localhost ~]#  groupdel  group1

修改用户组属性

用户组的组ID、组名等属性都可以被修改,修改用户组属性的命令为gruopmod,其命令格式如下:

groupmod  [选项]  group1

选项说明
-g为用户组指定新的组ID
-n修改用户组的组名
-o允许创建组ID已存在的用户组

# 创建一个组 group1 ,指定其组ID为550

[root@localhost ~]#  groupadd  -g  550  group1

#  在组 ID550 已存在的情况下,将用户组 itheima 的组 ID 改为 550

[root@localhost ~]# groupmod  -o  itheima -g 550

# 修改用户组 group1的组名为itcast

[root@localhost ~]#  groupmod  group1 -n  itcast

用户组切换

用户组分为基本组(也称默认组)和附属组。

附属组是用户所属的除基本组之外的组,用户的基本组唯一,附属组不唯一;用户可从附属组移除,但不能从基本组中移除。

如果一个用户属于多个组,当需要切换到其它组执行操作时,可使用newgrp命令切换用户组:

newgrp 用户组

# 切换用户 root 的工作组为 itcast

[root@localhost ~]#  newgrp  itcast

用户组管理

gpasswd 命令用于管理用户组:

gpasswd 选项  参数

选项说明
-a添加用户到用户组
-d从用户组中删除用户
-r删除密码
-R限制用户登入组,只有组中成员才可以用 newgrp 加入用户组

注意:使用usermod命令的 -g 选项为用户设置附属组时,将会覆盖用户原有的附属组,若想为用户设置多个附属组,需使用gpasswd命令将用户逐个添加到不同的用户组中。

# 将用户 itheima添加到用户组 itcast

[root@localhost ~]#  gpasswd  -a  itheima  itcast

 用户切换

Linux系统提供了两种切换用户的方式: 一种是通过Linux系统图形化界面菜单中的 “切换用户" 选项切换用户,另一种是在终端使用命令su或sudo切换用户。

通过图形界面菜单中的 “切换用户” 选项切换用户的方式如图2-1所示。


 Linux运维人员一般通过用户切换命令实现用户切换。

1. su

使用 su 命令切换用户是最简单的用户切换方式,该命令可在任意用户之间进行切换,其基本格式如下:

su  [选项]   [用户名]

若选项和用户名缺省,则表示切换到 root 用户,但此时仍保留原来用户的工作环境;若使用“su  -”,则表示从当前用户切换到root用户,并切换到root用户的工作目录。

su命令的常用选项如下:

选项说明
-c执行完指定的指令后,切换回原来的用户
-l切换用户的同时,切换到对应用户的工作目录,环境变量也会随之改变
-m,-p切换用户时,不改变环境变量
-s指定要执行的shell

使用su命令时,由root用户切换到其他用户,可以不输入密码;由普通用户切换到目标用户时,需要输人目标用户的密码。

2.sudo

虽然使用su命令相当方便,但由于需要知道目标用户的密码,所以su命令是不安全的,若想保障系统的安全,可以使用 sudo 命令切换用户。

sudo  [选项]  [参数]

sudo 可使当前用户以其他身份来执行命令、若不指定用户名,则默认以 root 身份执行。在使用sudo 命令时,用户需要输人自己的密码,此次密码验证在之后的5分钟内有效,若超时需重新验证。
sudo命令的常用选项如下:

选项说明
-b在后台执行命令
-h显示帮助
-H将HOME环境变量设置为新身份的HOME环境变量
-k结束密码的有效期限
-l列出目前用户可执行与无法执行的命令
-p改变询问密码的提示符号
-s执行指定的shell
-u以指定的用户作为新的身份,即切换到指定用户。默认切换到root用户


 

在使用 sudo 命令之前,需要先在 etc 目录下的 sudoers 文件中对可执行 sudo 指令的用户进行设置。sudoers 文件中的内容遵循一定的语法规范,为防止因语法有误导致的错误,Linux系统提供了 visudo 命令,使用该命令修改文件后,系统会在保存退出时对sudoers文件的语法进行检查。此外,visudo 命令亦可防止其他用户同时修改sudoers文件。下面将介绍使用root用户编辑sudoers 文件,为其他用户提升权限的方法。

首先在root用户下使用visudo命令打开sudoers文件,如下所示:

[root@localhost ~]# visudo

观察sudoers文件,可以在其中找到如下的语句:

# Allow root to run any commands anywhere
root     ALL=(ALL)            ALL

第一条语句是注释行,第二条语句是对root 用户的权限设置,它的作用是:使root用户能够在任何情境下执行任何命令。sudoers文件中的所有权限设置语句都符合如下格式:

账户名          主机名称=(可切换的身份)            可用的命令

以上格式中包含4个参数,每个参数的含义如下:

  • 账户名:该参数是要设置权限的账号名,只有账号名被写入sudoers文件时,该用户才能使用sudo命令。root 用户默认可以使用sudo命令。
  • 主机名称:该参数决定此条语句中账户名对应的用户可以从哪些网络主机连接当前Linux主机,root用户默认可以来自任何一台网络主机。
  • 可切换的身份:该参数决定此条语句中的用户可以在哪些用户身份之间进行切换、执行哪些命令。root 用户默认可切换为任意用户。
  • 可执行的命令:该参数指定此条语句中的用户可以执行哪些命令。注意,命令的路径应为绝对路径。root 用户默认可以使用任意命令。

     以上语句中的参数ALL是一个特殊的关键字,分别代表任何主机、任何身份和任何命令。以用户itheima为例,若要使用户itheima能以root用户的身份执行/bin/more命令,则应在sudoers文件中添加如下内容:

itheima  ALL=(root)/bin/more

保存退出后,切换到用户itheima,使用命令 “sudo  -l” 可查看该用户可以使用的命令。

通过在配置文件中逐条添加配置信息的方法提升用户权限在一定程度上保障了系统安全,但当需要操作的用户较多时,如此操作显然相对麻烦。Linux 系统支持为用户组内的整组用户统一设置权限。
在sudoers文件中有如下所示的语句:

# %wheel          ALL=(ALL)            ALL

以上语句中,“%” 声明之后的字符串是一个用户组,该语句表示任何加入用户组wheel的用户,都能通过任意主机连接、以任何身份执行全部命令。因此若想提升某些用户的权限为ALL,将它们添加到用户组wheel中即可。当然此条语句前的“#”仍然表示注释,若要使此条命令生效,需将“#”删除。以用户组itheima为例,若要使该组中的所有用户能以root的身份执行命令/bin/ more ,则应在sudoers文件中添加如下命令:

%itheima   ALL=(root)/bin/more

root作为系统中唯一的超级用户,权限极大,可以执行的命令极多,其中不乏非常危险的命令,如“rm -rf”。若是一个普通用户的权限被提升的太多,很可能会危及整个系统,为了防止这种情况,sudo命令中可以在配置sudoers文件时,对某些用户的权限进行控制。假如在itheima用户被提升至root 权限时,要禁止该用户使用/bin/more命令,可以使用以下语句:

itheima        ALL= (root) ! /bin/more

以上语句通过 “!” 符号禁止用户执行某些命令。

相关文章:

Linux的命令——关于操作用户及用户组的命令

目录 1.Linux的命令格式 2.用户与用户组管理 2.1用户管理 添加用户 设置用户密码 删除用户 修改用户 2.2用户组管理 新增用户组 删除用户组 修改用户组属性 用户组切换 用户组管理 用户切换 1. su 2.sudo 1.Linux的命令格式 Linux系统中几乎所有操作&#xff0…...

pycharm 设置多级跳转SSH

打开本地终端并运行: ssh -L <local_port>:<target_server_ip>:22 <proxy_server_user><proxy_server_ip>运行完之后就应该已经连接上proxy (Optional) 可以再开一个终端测试一下&#xff1a; ssh -p <local_port> <target_server_user&g…...

LeetCode 189.轮转数组(三种方法解决)

文章目录 题目暴力求解空间换时间三段逆置总结 题目 LeetCode 189.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5…...

GB28181设备对接视频流的流程

搭建CG28181 服务端&#xff0c;也即 SIP Server&#xff0c;这正是我们要实现的。实现CG28181服务端可以借助于现有的开源库 PJSIP&#xff0c;具体的实现步骤如下&#xff1a; 1、启动GB28181服务端&#xff0c;接收客户端消息请求 bool Init(std::string concat, int logL…...

类属性修改(为什么python类不具备被赋值能力?)

为什么python类不具备被赋值能力&#xff1f;&#xff0c;用魔术方法收集实参&#xff0c;在类中可以定义方法处理实际参数&#xff0c;实现对类“赋值”。 (笔记模板由python脚本于2023年11月15日 12:45:27创建&#xff0c;本篇笔记适合初通Python类class的coder翻阅) 【学习的…...

uniapp App端 解决input@input事件动态修改值不生效的问题

解决方法 1.延迟修改&#xff0c;利用setTimeout 2.异步修改&#xff0c;利用this.$nextTick <template><view><input v-modal"num" type"number" placeholder"请输入" :maxlength"3" input"onInputOne" …...

ELK分布式日志

ELK是指Elasticsearch、Logstash和Kibana三个开源软件的集合&#xff0c;用于构建分布式日志处理系统。 Elasticsearch是一款基于Lucene搜索引擎库的分布式全文搜索和分析引擎&#xff0c;支持多种数据类型的存储、搜索和分析&#xff0c;常用于日志分析、安全监控等领域。 L…...

Kylin-Server-V10-SP3+Gbase+宝兰德信创环境搭建

目录 一、Kylin-Server-V10-SP3 安装1.官网下载安装包2.创建 VMware ESXi 虚拟机3.加载镜像&#xff0c;安装系统 二、Gbase 安装1.下载 Gbase 安装包2.创建组和用户、设置密码3.创建目录4.解压包5.安装6.创建实例7.登录8.常见问题 三、宝兰德安装1.获取安装包2.解压安装3.启动…...

po与vo互转工具类

po转vo工具类 1.反射调用2.JSON序列化方式3.注解驱动4.ModelMappe5.手动映射6.总结7.扩展方法 1.反射调用 这个方法会创建一个新的实例&#xff0c;并将所有公共字段复制到目标对象中&#xff0c;而不修改原来的实例。因此&#xff0c;如果目标类包含 private 或 final 字段&am…...

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(三)

员工分页查询和账号启用禁用功能 1. 员工分页查询1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码开发1.2.1 设计DTO类1.2.2 封装PageResult1.2.3 Controller层1.2.4 Service层接口1.2.5 Service层实现类1.2.6 Mapper层 1.3 功能测试1.4 代码完善 2. 启用禁用员工账号…...

PyCharm:2023新版PyCharm无UI工具栏,如何回旧版

pycharm2023.3新版本&#xff0c;默认使用新UI&#xff0c;界面突然变化很大&#xff0c;感觉用起来很不适应。。。。于是&#xff0c;在网上搜了一下&#xff0c;确实有回老版的方法&#xff0c;试了一下&#xff0c;确实很nice~~~~ 方法&#xff1a; Settings——>Appea…...

阿里云国际站:云备份

文章目录 一、阿里云云备份的概念 二、云备份的优势 三、云备份的功能 四、云备份的应用场景 一、阿里云云备份的概念 云备份作为阿里云统一灾备平台&#xff0c;是一种简单易用、敏捷高效、安全可靠的公共云数据管理服务&#xff0c;可以为阿里云ECS整机、ECS数据库、文件…...

C#中.NET 6.0 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录

目录 一、应用程序设计 二、应用程序源码 三、生成效果 前文作者发布了在.NET 6.0 控制台应用中通过EF访问已有数据库&#xff0c;事实上&#xff0c;在.NET 6.0 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样&#xff0c;数据库EF模型和上下文都是自…...

kafka+ubuntu20.04+docker配置

记录一次配置过程 安装docker 参加下面链接的第一部分 Ubuntu20.04使用docker安装kafka服务-CSDN博客 安装zookeeper docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper安装kafka服务 docker run -d --name kafka …...

遍历一个对象,并得出所对应的值

var dates {//定义的对象year:now.getFullYear(),month:now.getMonth()1,date:now.getDate(),hour:now.getHours(),minute:now.getMinutes(),second:now.getSeconds() }//开始遍历循环 var val; for (val in dates){console.log(对象名称&#xff1a;val-对象的值&#xff1a;…...

WGCLOUD的特点整理

做运维工作很多年了&#xff0c;项目中用过不少的运维软件工具&#xff0c;今天整理下WGCLOUD的特点&#xff08;优点&#xff09; 首先WGCLOUD是完全免费的 部署使用&#xff1a;部署简单方便&#xff0c;上手容易&#xff0c;几乎没有学习成本&#xff0c;对新手友好 文档…...

新版软考高项试题分析精选(三)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1、项目整体管理要综合考虑项目各个相关过程&#xff0c;围绕整体管理特点&#xff0c;以下说法中&#xff0c;&#xff08; &#xff09;是不正确的。 A.项目的…...

从申请服务器到Docker部署Java项目至最后运行完结

目录 1.申请服务器篇 2.配置安全组篇 3.Docker安装篇 4.代码编写打包篇 目录结构 Maven Controller DockerFile 开始打包 5.所需文件上传及镜像构建篇 上传准备 上传jar包及DockerFile文件 指令构建 验证 6.镜像启动服务验证篇 启动镜像 使用云服务器地址进行…...

解决 requests.post 数据字段编码问题的方法

问题背景 在进行网络请求时&#xff0c;我们通常会使用requests库的post方法来发送POST请求。然而&#xff0c;当我们尝试发送包含特殊字符&#xff08;如中文字符&#xff09;的数据时&#xff0c;可能会遇到数据字段被编码的问题。这可能会导致请求失败或者服务器无法正确解…...

安全运维:cmd命令大全(108个)

1、calc&#xff1a;启动计算器 2、appwiz.cpl&#xff1a;程序和功能 3、certmgr.msc&#xff1a;证书管理实用程序 4、charmap&#xff1a;启动字符映射表 5、chkdsk.exe&#xff1a;Chkdsk磁盘检查(管理员身份运行命令提示符) 6、cleanmgr: 打开磁盘清理工具 7、clico…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...