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

news2024/10/5 21:24:47

目录

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity细节】Unity中如何让组件失活而不是物体失活

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏:unity细节和bug 😶‍🌫️优质专栏 ⭐【…

基于springboot实现协同过滤算法商品推荐系统项目【项目源码】计算机毕业设计

基于springboot实现协同过滤算法商品推荐系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备…

使用MybatisPlus时出现的java.lang.NullPointerException异常~

错误描述如下所示: 错误原因:Junit的导包错误 单元测试的包有如下所示两个 我们应该根据springboot的版本进行选择, 在Spring Boot 2.2.X以后使用import org.junit.jupiter.api.Test Junit5 在Spring Boot 2.2.x之前使用import org.junit.T…

U盘不可以访问的维护

u盘打不开,可按下图,设置:winR→gpedit.msc;配置“管理模板”→“系统”→“可移动存储访问”→“所有可移动存储类”。 然后,选择“未配置”,如下图

【Linux网络】系统调优之时间同步,搭建内网时间同步服务器

目录 一、时间同步是什么 二、时间同步实验 pc1的chrony配置修改: pc2和pc3时间同步配置一样 关于时间调整再同步回来:ntpdate命令 最后,再总结一下(关于服务端口): 三、命令记录 一、时间同步是什…

大数据治理——为业务提供持续的、可度量的价值(一)

目录 大数据治理——为业务提供持续的、可度量的价值... 1 概述... 2 大数据治理系列... 2 第一部分:大数据治理统一流程模型概述和明确元数据管理策略... 2 第二部分:元数据集成体系结构... 15 第三部分:实施元数据管理... 25 第四部…

复杂度计算实例

1.常见时间复杂度计算举例 实例1 实例1基本操作执行了2N10次,通过推导大O阶方法知道,时间复杂度为 O(N) 实例2 实例2基本操作执行了MN次,有两个未知数M和N,时间复杂度为 O(NM) 实例3 实例3基本操作执行了100次,通过…

技术架构-单机架构

前言 从今天开始系统学习 Docker 课程,总结下 Docker 是什么,用来做什么,架构是怎样的。 注:(1)当浏览器 / APP访问服务器时,如果服务器适用的时 http 协议,那么默认端口时80&#…

LeetCode【33】搜索旋转排序数组

题目&#xff1a; 思路&#xff1a; https://www.cnblogs.com/CherryTab/p/12196580.html 代码&#xff1a; class Solution {int [] nums;int target;public int find_rotate_index(int left, int right) {if (nums[left] < nums[right])return 0;while (left < righ…

C语言实现写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度

完整代码&#xff1a; // 写一个函数&#xff0c;求一个字符串的长度&#xff0c;在main函数中输入字符串&#xff0c;并输出其长度 #include<stdio.h> //字符串最大长度 #define N 100 int strlen(char *str){int i0;//字符串结尾为‘\0’while (*str!\0){i;//指针移动…

drawio连接线使用技巧和功能大全

drawio连接线使用技巧和功能大全 drawio是一款强大的图表绘制软件&#xff0c;支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用&#xff0c;则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能&#xff0c;并实现了…

[游戏中的图形学实时渲染技术] Part1 实时阴影技术

原理篇&#xff1a; 常见的渲染方程如下&#xff1a; 在不考虑自发光项与考虑阴影对于着色结果的影响之后可以将方程变化为如下形式&#xff1a; 如果射线在到达光源前击中了其他物体时&#xff0c;就认为这条来自光源的光线对着色点没有贡献。 利用上述渲染方程进行正确的着…

基于springboot的教学在线作业管理系统(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

一文图解爬虫(spider)

—引导语 互联网&#xff08;Internet&#xff09;进化到今天&#xff0c;已然成为爬虫&#xff08;Spider&#xff09;编制的天下。从个体升级为组合、从组合联结为网络。因为有爬虫&#xff0c;我们可以更迅速地触达新鲜“网事”。 那么爬虫究竟如何工作的呢&#xff1f;允许…

补坑:Java的字符串String类(1)

常用方法 字符串构造 来看看源码里面String的构造方法 普通字符串 //"hello" 是字符串常量&#xff0c;没有\0标记结尾String str "hello";System.out.println(str);//helloString str2 new String();System.out.println(str2);//没有输出String str3…

摊位展示预约小程序的作用有哪些

无论市场还是街边&#xff0c;小摊小贩往往很多&#xff0c;组成了丰富多彩的线下购物环境&#xff0c;而在实际发展中&#xff0c;摊位的需求度很高&#xff0c;但由于种种原因&#xff0c;导致在实际发展中&#xff0c;也有一定难题&#xff1a; 1、摊位预约难、信息查看难 …

IDEA的优化配置教程

前言 IDEA 全称 IntelliJ IDEA&#xff0c;是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具&#xff0c;尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以…

多门店民宿预定系统酒店预订管理系统源码/公寓/农家乐小程序源码

技术栈&#xff1a; thinkphpuniappmysql 支持H5APP小程序 主要功能介绍&#xff1a; 在线预订 支持在线支付或到店付&#xff0c;支持配置免费取消订单时长&#xff0c;支持到店付保留时长设置 房间搜索 支持按日期搜索房间状态&#xff0c;支持按日期区间搜索房间状态…

Python tkinter库利用Scrollbar对象实现Text组件右侧滚动条

在Python的Tkinter中&#xff0c;可以使用Scrollbar来实现Text组件的上下滑动。首先&#xff0c;需要创建一个Scrollbar对象并将其与Text组件绑定&#xff0c;然后将Scrollbar放置在Text组件的右侧&#xff0c;使其能够控制Text组件的上下滑动。 运行结果 以下是一个简单的示例…

Postman常见报错与解决方法,持续更新~

postman中文文档 基本操作&#xff1a;从控制台查看请求报错 如果 Postman 无法发送你的请求&#xff0c;或者如果它没有收到你发送请求的 API 的响应&#xff0c;你将收到一条错误消息。此消息将包含问题概述和指向控制台的链接&#xff0c;你可以在其中访问有关请求的详细信…