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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32控制直流电机加减速正反转仿真设计

**单片机设计介绍,基于STM32控制直流电机加减速正反转仿真设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 本设计由STM32F103、L298N电机驱动电路、按键电路组成。通过按键可以控制电机,正转、反转、加…

8年经验之谈 —— 接口测试框架中的鉴权处理!

接口自动化测试中通常都有鉴权机制,就是判断是否在登录状态下,已登录方可调用接口,未登录则不可调用。本文将带领大家学习使用rest-assured框架实现基于cookies和token的鉴权关联,实现接口自动化测试。 1、基于cookies的鉴权关联…

Http状态码502常见原因及排错思路(实战)

Http状态码502常见原因及排错思路 502表示Bad Gateway。当Nginx返回502错误时,通常表示Nginx作为代理服务器无法从上游服务器(如:我们的后端服务器地址)获取有效的响应。导致这种情况的原因有很多: 后端服务器故障ngin…

基于SpringBoot+Vue的博物馆管理系统

基于springbootvue的博物馆信息管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 基于SpringBoot和Vue的博物馆…

vue3响应式api

响应式api——compositon api setup: 不要再想this问题执行是在beforeCreated之前 beforeCreated:也就是创建了一个实例 created:挂载了数据 通过形参props接收,只读 以后所有代码都写到setup中 判断是否只读:isReadon…

lc228. 汇总区间

暴力解法:遍历数组,判断数组是否连续递增。将连续递增的数据的首尾的数据分别存储在map集合的key和value之中,输出时判断首尾值是否相同采用两种方式输出 复杂度分析 时间复杂度:O(n),其中 n 为数组的长度。空间复杂…

2023亚太杯数学建模A题思路

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料5 最后 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 2023年第十三…

【LeetCode】每日一题 2023_11_12 每日一题 Range 模块

文章目录 刷题前唠嗑题目:Range 模块题目描述代码与解题思路 刷题前唠嗑 LeetCode? 启动!!! 嗯?怎么是 hard,好长,可恶,看不懂,怎么办 题目:Range 模块 题…

线索二叉树(存储结构,线索化,寻找前驱/后继)

目录 1.线索二叉树1.中序线索二叉树2.后序线索二叉树3.先序线索二叉树 2.线索二叉树的存储结构3.二叉树的线索化1.中序线索化2.先序线索化3.后序线索化 4.寻找前驱/后继1.中序线索二叉树找后继2.中序线索二叉树找中序前驱3.先序线索二叉树找先序后继4.先序线索二叉树找先序前驱…

[pipe-自写管道] 强网拟态2023-water-ker

程序分析 保护当然都开了, 题目给了一次增加, 释放, 修改一字节堆块的能力, 这里释放堆块后没有将其指针置空从而导致了 UAF. 漏洞利用 这里的堆块大小为 512 字节并是 SLAB_ACCOUNT, 所以可以直接利用管道去构造自写管道从而构造任意读写系统, 详细见大佬博客:【CTF.0x08】D…

Spring学习笔记——AOP(4)

Spring学习笔记——AOP(4) 一、学习AOP1.1 AOP的概述1.2 AOP思想实现方案1.3、模拟AOP的基础代码1.4、AOP的相关概念 二、基于xml配置AOP2.1 AOP基础入门2.2、XML方式AOP配置详解2.3、XML方式AOP原理剖析 三、注解式开发AOP3.1 注解式开发AOP入门3.2 AOP…

SpringBoot原理

1配置优先级: SpringBoot项目当中支持的三类配置文件: application.properties application.yml application.yaml配置文件优先级排名(从高到低): 1. properties配置文件 2. yml配置文件 3. yaml配置文件在SpringBoot…

Java常用设计模式(23种)

文章目录 介绍 设计模式的六大原则 一、创建型模式 1、单例模式(Singleton Pattern) 1)饿汉式 2)懒汉式,双检锁 3)静态内部类 4)枚举 2、原型模式(Prototype Pattern&#xff09…

2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项规程

第十六届山东省职业院校技能大赛 中职组“网络安全”赛项规程 一、赛项名称 赛项名称:网络安全 英文名称:Cyber Security 赛项组别:中职组 专业大类:电子与信息大类 二、竞赛目的 网络空间已经成为陆、海、空、天之后的第…

【Servlet】 四

本文主要介绍了cookie和session的区别和联系 . 一.cookie 1.cookie是浏览器在本地持久化存储数据的一种机制 cookie的数据从哪里来 服务器返回给浏览器的 cookie的数据什么样 cookie中是键值对结构的数据,并且这里的键值对都是程序员自定义的 cookie有什么作用 cookie可以在…

通过easyexcel导出数据到excel表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出,使用之前easyui构建的歌曲列表crud应用,添加一个导出按钮,点击的时候直接连接后端接口地址,在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

Matplotlib绘图一网打尽【持续更新ing】

2 绘制扇形图 绘制一个展示男女乘客比例的扇形图 得出男女的具体数字 sex_per df["Sex"].value_counts() sex_per # 把画图的包导入进来 import matplotlib.pyplot as plt# 这种绘图方式主要用于有多个子图以及复杂的图形布局的时候。fig,ax plt.subplots()# pl…

Ubuntu虚拟机设置静态IP

目录 1 确定网络信息2 配置网络文件3 更新配置4 验证 网上很多方案都是 sudo vi /etc/network/interfaces 但是在Ubuntu20.04中我的目录i已经没有这个文件夹了,好像就算自己新建通过这种方式也是不能达到静态ip的目的。整理了下面的这种方式,实测最终有效…

第25章_索引优化与查询优化

文章目录 1. 数据准备2.索引失效案例2.1全值匹配2.2最佳左前缀法则2.3主键插入顺序2.4 计算、函数导致索引失效2.5 类型转换导致索引失效2.6 范围条件右边的列索引失效2.7 不等于(! 或者<>)索引失效2.8 is null可以使用索引&#xff0c;is not null无法使用索引2.9 like以…

多孔对跨孔电磁波CT联合反演

多孔对跨孔电磁波CT联合反演 前言 针对单一孔对跨孔电磁波CT反演数据拼接剖面不连续&#xff0c;相邻钻孔间吸收系数差异大的问题&#xff0c;采用多孔对跨孔电磁波CT联合反演。 1、多孔对数据拼接 将所有单一剖面连接为多孔剖面&#xff0c;以‘东大北大’的原则编号。 …