一、Linux的用户及用户组与权限

 1.1、Linux的用户和用户组内容介绍

Linux的用户角色分类
序号Linux的用户角色说明
1超级用户拥有对系统的最高管理权限,可执行任意操作,默认是root用户
2普通用户只能对自己目录下的文件进行访问和修改,具有登录系统的权限(如:www用户、ftp用户、nginx用户等)
3虚拟用户也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求(如:系统默认的bin、adm、nobody用户等);
Linux的用户和用户组关系
序号用户和用户组关系说明
1一对一一个用户可以存在一个组中,也可以是组中的唯一成员
2一对多一个用户可以存在多个用户组中(此时用户具有多个组的共同权限)
3多对一多个用户可以存在一个组中,这些用户具有和组相同的权限
4多对多多个用户可以存在多个组中(多个用户可分别在多个组中,是前三种关系的拓展)
Linux中的用户和用户组相关配置文件
序号用户和用户组配置文件说明
1/etc/passwd

是系统用户配置文件,是用户管理中最重要的一个文件(这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读

2/etc/shadow

是用户影子文件,存储用户密码(由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限)

3/etc/group

用户组配置文件,用户组的所有信息都存放在此文件中

4/etc/login.defs

用来定义创建一个用户时的默认设置(如:指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等)

5/etc/default/useradd

定义了新建用户的一些默认属性(如:用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值)

6/etc/skel

是目录,定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息

 1.2、Linux的用户和用户组操作命令

用户和用户组操作
序号用户操作命令说明
1useradd

创建一个新的Linux用户

语法:useradd [选项] 登录名

常用选项如下:【其他的选项内容可用命令[useradd -h]查看】

《1》-u uid:用户编号,此编号必须唯一;

《2》-g group:指定新建用户登录时所属的默认组(主组)此用户组必须已经存在;

《3》-G group:指定新建用户的附加组,此群组必须已经存在(附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组);

《4》-d home:指定新建用户的默认主目录(若不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录);

《5》-s shell:指定新建用户使用的默认shell(若不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell);

《6》-o uid:允许使用重复的 UID 创建用户;

#示例1:新建一个名为testuser和testuser666的用户
useradd testuser#示例2:新建一个testuser333的用户且指定主组为testuser,附属组为testuser666,主目录为/opt/testuser33
useradd -g testuser -G testuser666 -d /opt/testuser333 testuser333#查看指定用户的信息(如:查看testuser用户的信息)
id testuser#修改指定用户的密码(如:修改testuser的密码)【注意:用户新建后需要设置密码,不设置密码是无法登陆的】
passwd testuser

2

usermod

修改已有的Linux用户信息

语法:usermod [选项] 登录名

常用选项如下:【其他的选项内容可用命令[usermod -h]查看】

《1》-u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项;

《2》-g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在;

《3》-G group:修改用户所属的附加组;

《4》-d 主目录:修改用户登录时的主目录;

《5》-s shell:修改用户登录系统后默认使用的shell;

《6》-o uid:允许使用重复的 UID 创建用户;

《7》-L:锁定用户密码,使密码无效;

《8》-U:解除密码锁定;

#1-修改用户的主组(如修改testuser333用户的主组为testuser333)【注意:若用户组不存在会报错,需要先去创建用户组】
usermod -g testuser333 testuser333#1.1-创建testuser333用户组
groupadd testuser333#2-修改用户的附属组(如修改testuser333用户的附属组为testuser333)
usermod -G testuser testuser333#3-同时修改testuser333用户的主组为testuser666,附属组为testuser666和testuser
usermod -g testuser666 -G testuser666,testuser testuser333#4-锁定指定用户(让改账号不能登录使用)【如锁定testuser333用户】
usermod -L testuser333#5-查看指定用户的锁定状态(如:查看testuser333用户的锁定状态)
passwd -S testuser333#6-解除指定用户的锁定(如解除testuser333用户的锁定)
usermod -U testuser333

3userdel

删除指定用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件

#1-只删除指定用户(如:只删除testuser用户)
userdel testuser#2-删除指定用户且删除该用户的主目录
userdel -r testuser333

序号用户组操作命令说明
1groupadd

添加新的用户组

语法:groupadd [选项] 组
-g:指定新建用户组的GID号,该GID号必须唯一(不能与其它用户组的GID号重复)

#示例1:创建一个名为testgroup的用户组且指定编号为1666
groupadd -g 1666 testgroup#示例2:创建一个名为testgroup2的用户,且编号自动创建
groupadd testgroup2#查看指定的用户组信息命令(如:查看testgroup用户组信息)
cat /etc/group|grep testgroup

2newgrp主要用于在多个用户组之间进行切换
3groupdel

删除用户组(若用户组中仍包含某些用户,则必须先删除这些用户后,然后才能删除用户组)

#示例:删除指定的用户组(testgroup)命令
groupdel testgroup

#将指定用户从指定用户组中移除方法一
gpasswd -d 需移除的用户 需移除用户的用户组#示例:将testuser666用户从root用户组中移除
gpasswd -d testuser666 root#将指定用户从指定用户组中移除方法二(直接修改 /etc/group文件)
vi  /etc/group

 1.3、Linux中的权限及其切换用户操作 

Linux中的用户与权限操作https://coffeemilk.blog.csdn.net/article/details/149037758

二、Linux的环境变量

 2.1、Linux的常用环境变量及其操作

Linux的常用环境变量及其操作
序号环境变量操作命令内容说明
1查看环境变量env

可列出所有已经定义的环境变量内容

echo

查看环境变量的语法:echo $环境变量名称

#示例1:查看系统环境变量内容
echo $PATH#示例2:查看shell内容
echo $SHELL#示例3:查看bash内容
echo $BASH

2常见环境变量常见系统环境变量:
PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL
3自定义环境变量export 

《1》可查看所有导出的的变量内容【export】

《2》定义并设置自定义变量

#示例1:直接定义变量testvar并设置值为testvalue
export testvar=testvalue#示例2:可以给自定义变量赋值然后在声明
testvar2=666
export testvar2

注意:环境变量可以在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,必须用export命令导出

4清除环境变量unset
#示例1:清除环境变量testvar
unset testvar#示例2:清除环境变量testvar2
unset testvar2

 2.2、Linux的环境变量文件

Linux的环境变量文件
序号环境变量文件说明
1/etc/profile

属于全局环境变量配置文件

2

.bash_profile

.bashrc

属于用户环境变量文件

当某个Linux用户登录系统时,shell会首先执行系统默认的配置文件【/etc/profile】然后会自动执行【.bash_profile】文件,如果【.bash_profile】文件不存在,则接着读取【~/.bashrc】文件
 Bash的初始化环境变量文件顺序如下图所示:

 2.3、添加环境变量

添加环境变量的操作
序号添加用户环境变量的操作
1

打开需操作用户主目录下的【 .bash_profile】文件,然后添加需要配置的环境变量内容

#1-比如打开testuser用户的主目录【/home/testuser】下的【.bash_profile】文件进行编辑新增JAVAHOME环境
vi /home/testuser/.bash_profile#2-给testuser用户的【.bash_profile】文件新增JAVAHOME内容后保存退出
export JAVA_HOME=/usr/local/jdk1.8.0_04
export PATH=$PATH:$JAVA_HOME/bin

2

配置文件环境变量文件后,执行source命令马上生效

#1-让指定用户的配置文件立即生效
source /home/testuser/.bash_profile

环境变量配置文件使用原则:
1、与用户相关的环境变量配置均配置到用户目录下面的配置文件中(.bash_profile、.bashrc);

2、需要对全局生效的环境变量配置,都配置到/etc/profile文件中;

三、sudo的权限配置解析及其使用

 3.1、sudo权限配置说明

sudo的权限配置说明

sudo命令的配置文件是【/etc/sudoers

注意一:编辑sudo命令的配置文件必须使用独有的命令【visudo】打开操作,该工具会给你自动检查语法内容;

注意二:不要使用vi或vim打开,否则一旦因为语法写错会造成严重的后果。

序号sudo配置及其说明
1
root    ALL=(ALL)       ALL

1、root 表示用户;

2、ALL 表示从任何的主机上都可以执行(也可以是指定网段如:192.168.166.0/24);

3、(ALL) 是以谁的身份来执行,ALL表示代表root用户可以以任何人的身份来执行命令;

4、ALL 表示任何命令;

这条规则配置的完整含义是【root用户可以在任何主机以任何人的身份来执行所有的命令】

规则配置语法:【who where whom command】(即:是谁在什么位置以谁的身份执行什么命令)

2
coffeemilk   192.168.166.0/24=(root) /usr/sbin/useradd
这条配置表示【只允许coffeemilk用户在 192.168.166.0/24 网段上连接主机并且以root权限执行useradd 命令】
3
www  ALL=(root)      NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

这条配置表示【允许www用户可在任何主机上以root身份执行所有命令,且不用输入密码,可执行的所有命令中除了修改用户密码、不能修改root用户密码、不能使用su命令切换外的其他所有命令】该命令一般给应用程序配置用户使用

4
%wheel  ALL=(ALL)       ALL

这条配置表示【允许wheel用户组可在任意主机上以任何人的身份来执行所有命令】只用将用户添加到这个组下就具有这个组的权限了;

注意:这条配置在centos7及其更高版本默认已经开放%wheel这一行,但是之前的centos版本没有启用

5
%wheel        ALL=(ALL)       NOPASSWD: ALL

这条配置表示【允许wheel用户组可在任意主机上以任何人的身份来执行所有命令,并且不用输入密码】

 3.2、sudo权限配置使用

#编辑sudo文件
visudo /etc/sudoers#示例1:给testuser用户配置sudo权限(只允许testuser用户在192.168.1.1-192.168.1..254网段内以root身份执行任何命令,且需要输入testuser用户自己的密码,除了不能修改所有用户密码和切换用户)
testuser  192.168.1.0/24=(root)         ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

#编辑sudo文件
visudo /etc/sudoers#示例2:给testuser用户配置sudo权限(只允许testuser用户在192.168.1.1-192.168.1..254网段内以root身份执行任何命令,且不用输入testuser用户自己的密码,除了不能修改所有用户密码和切换用户)
testuser  192.168.1.0/24=(root)         NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

#示例3:将testuser333用户添加到wheel组中,让testuser333用户拥有wheel组的权限
usermod -G wheel testuser333#将用户testuser333从wheel用户组中移除【注意:执行该命令在root用户下执行,若在当前用户下执行则需要退出该用户后重新登录后权限才会失效】
gpasswd -d testuser333 wheel

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解LeetCode:79递归实现单词搜索

网格 (board): 单词搜索 中等 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”…

2025 R3CTF

文章目录EvalgelistSilent Profit&#xff08;复现&#xff09;Evalgelist <?phpif (isset($_GET[input])) {echo <div class"output">;$filtered str_replace([$, (, ), , ", "", "", ":", "/", "!&…

WebView JSBridge 无响应问题排查实录 全流程定位桥接调用失效

在混合开发项目中&#xff0c;Web 页面与 Native 的通信桥梁——JSBridge&#xff0c;承担着极为关键的角色。它不仅让网页能调起原生功能&#xff08;分享、登录、拍照等&#xff09;&#xff0c;也支持原生传值、事件回调。 然而&#xff0c;当 JSBridge 调用“没有响应”、c…

前端构建工具 Webpack 5 的优化策略与高级配置

前端构建工具 Webpack 5 的优化策略与高级配置 当你的项目启动需要一分钟&#xff0c;或者每次热更新都像在“编译整个宇宙”时&#xff0c;你可能已经意识到了一个问题&#xff1a;前端构建性能&#xff0c;正成为开发效率的瓶颈。Webpack 作为现代前端开发的基石&#xff0c;…

tun2socks原理浅析

tun2socks 的原理是将TUN 设备上的IP 数据包转换为SOCKS 协议数据&#xff0c;然后通过SOCKS 代理服务器发送。简单来说&#xff0c;它利用TUN 设备模拟一个虚拟网络接口&#xff0c;将所有流经该接口的网络流量重定向到SOCKS 代理&#xff0c;从而实现流量的代理转发&#xff…

Go从入门到精通(22) - 一个简单web项目-统一日志输出

Go从入门到精通(21) - 一个简单web项目-统一日志输出 统一日志输出 文章目录Go从入门到精通(21) - 一个简单web项目-统一日志输出前言日志库横向对比zap 使用安装依赖创建日志配置修改主程序的日志在处理函数中使用日志日志示例控制台输出文件输出&#xff08;json&#xff09…

UI前端大数据处理新挑战:如何高效处理实时数据流?

hello宝子们...我们是艾斯视觉擅长ui设计和前端数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;从 “批处理” 到 “流处理” 的前端革命当股票 APP 因每秒接收 10 万条行情数据…

【接口测试】08 Postman使用教程(带案例)

目录 一. Postman安装 二. Postman使用 1. 创建项目 2. 创建集合 3. 设置变量 4. 创建测试用例 5. 数据驱动测试 6. 接口关联 7. 断言和封装 8. 批量执行 9. 导出用例 10. 生成测试报告 一. Postman安装 PostMan——安装教程&#xff08;图文详解&#xff09;_postman安装教程-…

从springcloud-gateway了解同步和异步,webflux webMvc、共享变量

webMVC和webFlux 这是spring framework提供的两种不同的Web编程模型应用场景&#xff1a;用 WebMvc&#xff1a; 项目依赖 Servlet 生态、需要简单同步代码&#xff0c;或使用阻塞式数据库&#xff08;如 MySQL JDBC&#xff09;。用 WebFlux&#xff1a; 需要高并发&#xff…

如何在 Pytest 中调用其他用例返回的接口参数?

回答重点在 Pytest 中&#xff0c;我们可以通过使用共享夹具&#xff08;fixtures&#xff09;来调用和复用其他用例返回的接口参数。在 Pytest 中&#xff0c;fixtures 提供了一种灵活且有组织的方式来共享测试数据或对象。具体步骤如下&#xff1a;1&#xff09;首先&#xf…

倒计时熔断机制的出价逻辑

一、业务背景传统竞价机制中&#xff0c;“倒计时结束”是系统决定成交者的关键逻辑&#xff0c;但在实际中&#xff0c;最后3秒突然被抢价的情况极为常见&#xff0c;出现以下问题&#xff1a;用户投诉平台机制不公平&#xff1b;用户出价但未成交&#xff0c;产生争议订单&am…

未来手机会自动充电吗

未来手机实现‌全自动充电&#xff08;无需人为干预&#xff09;‌是技术发展的明确趋势&#xff0c;目前已有部分技术落地&#xff0c;但要达到“随时随地无感补电”&#xff0c;仍需突破以下关键领域&#xff1a;一、已实现的技术&#xff08;当下可用的“半自动”充电&#…

MySQL高级篇(二):深入理解数据库事务与MySQL锁机制

引言在现代数据库系统中&#xff0c;事务和锁机制是确保数据一致性和完整性的两大核心技术。无论是金融交易系统、电商平台还是企业级应用&#xff0c;都离不开这些基础功能的支持。本文将全面剖析数据库事务的四大特性&#xff0c;深入探讨MySQL中的各种锁机制&#xff0c;帮助…

XML 指南

XML 指南 引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它具有高度的可扩展性和灵活性。在互联网和软件开发领域,XML被广泛应用于数据交换、配置文件、文档存储等场景。本文将为您详细介绍XML的基本概念、语法规则、应用场景以及开发技巧,帮助您全面了解…

Flink Watermark原理与实战

一、引言Flink 作为一款强大的流处理框架&#xff0c;在其中扮演着关键角色。今天&#xff0c;咱们来聊聊 Flink 中一个极为重要的概念 —— Watermark&#xff08;水位线&#xff09;&#xff0c;它是处理乱序数据和准确计算的关键。接下来我们直入主题&#xff0c;首先来看看…

Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库

Rust Web 全栈开发&#xff08;五&#xff09;&#xff1a;使用 sqlx 连接 MySQL 数据库Rust Web 全栈开发&#xff08;五&#xff09;&#xff1a;使用 sqlx 连接 MySQL 数据库项目创建数据库准备连接请求功能实现Rust Web 全栈开发&#xff08;五&#xff09;&#xff1a;使用…

【zynq7020】PS的“Hello World”

目录 基本过程 新建Vivado工程 ZYNQ IP核设置 使用SDK进行软件开发 基于Vivado2017 Vivado工程建立 SDK调试 固化程序 注&#xff1a;Vivado 2019.1 及之前&#xff1a;默认使用 SDK Vivado 2019.2-2020.1&#xff1a;逐步过渡&#xff0c;支持 SDK 与 Vitis 并存 Vi…

希尔排序和选择排序及计数排序的简单介绍

希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数gap&#xff0c;把待排序文件中所有数据分成几个组&#xff0c;所有距离为gap的数据分在同一组内&#xff0c;并对每一组内的数据进行排序。然后gap减减&#xff0c;重复上述分组和排序的工作。当到…

Solid Edge多项目并行,浮动许可如何高效调度?

在制造企业的数字化设计体系中&#xff0c;Solid Edge 作为主流 CAD 工具&#xff0c;因其灵活的建模能力、同步技术和强大的装配设计功能&#xff0c;广泛应用于机械设备、零部件制造等行业的研发场景。随着企业设计任务复杂化&#xff0c;多项目并行成为常态&#xff0c;Soli…

Flink cdc 使用总结

Flink 与 Flink CDC 版本兼容对照表Flink 版本支持的 Flink CDC 版本关键说明Flink 1.11.xFlink CDC 1.2.x早期版本&#xff0c;需注意 Flink 1.11.0 的 Bug&#xff08;如 Upsert 写入问题&#xff09;&#xff0c;建议使用 1.11.1 及以上。Flink 1.12.xFlink CDC 2.0.x&#…