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

Linux的用户和用户组与权限解析、环境变量说明与配置、sudo配置解析和使用

一、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.dtcms.com/a/280658.html

相关文章:

  • HarmonyOS从入门到精通:自定义组件开发指南(七):自定义事件与回调
  • 涨停板池,跌停板池,炸板池,次新股池,强势股池数据接口
  • 单臂路由实现VLAN互通实验
  • e签宝电子合同成为白象食品数字化转型中的关键一环
  • PostgreSQL 超详细安装与使用教程:从入门到实战
  • 深入剖析 React Server Components:原理、应用与性能优势
  • 设计模式一: 模板方法模式 (Template Method Pattern)
  • Nexus 私服管理工具
  • 李宏毅《生成式人工智能导论》 | 第11讲-第14讲:大型语言模型的可解释性、能力评估、安全性
  • 20250715问答课题-基于BERT与混合检索问答系统
  • 电商缓存强一致方案:数据库锁保障
  • 设计模式开篇:设计模式的七大核心原则
  • kube-proxy 中 IPVS 与 iptables
  • PyTorch笔记7----------计算机视觉基础
  • OpenCV 伽马校正函数gammaCorrection()
  • MODIS_Landsat_Sentinel2星源分幅简述【20250715】
  • 视频编码中熵编码之基于上下文的变长编码(Huffman霍夫曼编码和指数哥伦布)
  • 【YOLOv11-目标检测】06-模型部署(C++)
  • 06_pt-table-sync 工具解决 MySQL 主从数据不一致
  • conda环境保存(后期再来整理)
  • etcd自动压缩清理
  • 2-Nodejs运行JS代码
  • iOS高级开发工程师面试——Swift
  • Fiddler 中文版抓包实战 构建标准化调试流程提升团队协作效率
  • echarts 绘制3D中国地图
  • React强大且灵活hooks库——ahooks入门实践之开发调试类hook(dev)详解
  • PostgreSQL 数据库中 ETL 操作的实战技巧
  • React源码6 三大核心模块之一:commit, finishConcurrentRender函数
  • 前端学习笔记:React.js中state和props的区别和联系
  • haproxy负载均衡