Linux用户权限管理与文件权限设定

一、相关概念

1、用户与角色分类

超级用户:拥有对系统的最高管理权限,默认是root用户。

普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。

虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等。

2、用户和组以及关系

一对一、一对多、多对一、多对多

3、用户和组相关的配置文件

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

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

/etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。

/etc/login.defs文件:用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

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

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

二、相关命令 

1、添加、切换、删除用户组命令

(1)groupadd命令 用来新建一个用户组。语法格式为:

groupadd -g gid     #groupname -g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。

(2)newgrp命令 如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换

(3)groupdel命令 表示删除用户组,语法格式为:

groupdel [群组名称]     #当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。

2、添加、修改和删除用户命令 

(1)useradd的使用语法:

useradd  [-u uid ] [-g group] [-G group,...]  [-d home] [-s shell] name

各个选项具体含义如下:

-u uid:即用户标识号,此标识号必须唯一。

-g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。

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

-d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。

-s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。

(2)usermod用来修改用户的账户属性信息,使用语法如下:

usermod  [-u uid] [-g group] [-G group,...] [-d 主目录 ] [-s shell] [-L|-U] Name

各个选项具体含义如下:

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

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

-G group:修改用户所属的附加组。

-d 主目录:修改用户登录时的主目录。

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

-L:锁定用户密码,使密码无效。

-U:解除密码锁定。 userdel的使用语法 Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为: userdel [-r][用户帐号]

3、chown改变属主和属组     

chown就是change owner的意思,主要作用就是改变文件或者目录的所有者,而所有者包含用户和用户组,其实chown就是对文件所属的用户和用户组进行的一系列设置。 chown使用的一般语法为:

chown [-R] 用户名称 文件或目录

chown [-R] 用户名称:用户组组名称 文件或目录

参数说明: -R : 进行递归式的权限更改,也就是将目录下的所有文件、子目录都更新成为指定的用户组权限。常常用于变更某一目录的情况。 

4、chmod改变访问权限

chmod用于改变文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的字符设定法;另一种是包含数字的数字设定法。

(1)字符设定法 使用语法为:

chmod [who] [+ | - | =] [mode] 文件名

who表示操作对象,可以是下面字母中的任何一个或者它们的组合。

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“用户组(group)”,即文件或目录所属的用户组。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。它是系统默认值。

操作符号含义如下: “+”表示添加某个权限。“-”表示取消某个权限。“=”表示赋予给定的权限,同时取消文档以前的所有权限。

mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。

(2)数字设定法 使用语法为:

chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合]  文件名

0表示没有任何权限 1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。

2表示有可写权限,与“w”对应

4表示有可读权限,对应与“r“

三、 Linux用户与环境变量

当一个用户创建完毕,与之相关的环境变量也就创建了起来。

1、常见系统环境变量

PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL

我们常用  echo $[环境变量名]  来查看对应的环境变量信息,从下面的图我们也可以看出:PATH作用是指定命令的搜索路径;PWD是用来查看当前目录;SHELL是看当前Shell;HOSTNAME是查看主机名;LANG是默认语言。

2、定义环境变量

ENVIRON-VARIABLE=value      #环境变量赋值

export ENVIRON-VARIABLE      #声明环境变量

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

3、清除环境变量

unset 环境变量名

4、显示环境变量内容

env命令可以列出已经定义的环境变量

echo命令:    echo $环境变量名

5、环境变量与配置文件

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

.bash_profile和.bashrc属于用户环境变量文件,此两个文件位于用户根目录下。     

当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。

Bash的初始化环境变量文件顺序:

环境变量配置文件使用原则:

跟用户相关的环境变量配置均配置到用户目录下面的配置文件中(.bash_profile、.bashrc),需要对全局生效的环境变量配置,都配置到/etc/profile文件中。 

6、演示

(1)怎么在现有路径上去添加一个新的路径,我们配置一个用户的环境变量,vi 进入.bash_profile文件,将定义的环境变量写入其中,保存退出。

(2) 配置文件环境变量文件后,执行source命令马上生效。这样我们就可以在任意路径下去执行JAVA_HOME/bin路径下对应的二进制文件了。

四、sudo命令的使用

1 、用途

类似 su 命令切换用户,但sudo的使用相比su命令更加灵活,试问在一个多人办公的情况下,如果每个人都需要使用root用户去执行管理员操作,那密码还有存在的必要么?在用户权限维护方面sudo使用会更多。

2、sudo相关权限文件配置

1、sudo命令的配置文件为/etc/sudoers,编辑这个文件有个单独的命令visudo(这个文件最好不要使用vim命令来打开),因为一旦语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:

who where whom command(指定哪个用户,在什么地方,以哪个用户的身份来执行,去执行什么命令)

2、/etc/sudoers文件默认给 root 用户定义了一条规则:

root    ALL=(ALL)       ALL     #root用户可以在任何主机以任何人的身份来执行所有的命令。

root表示 root 用户。

ALL表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。

(ALL)是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令。

ALL 表示任何命令。 

3、一些例子:

iivey   192.168.10.0/24=(root) /usr/sbin/useradd

上面的配置只允许iivey在 192.168.10.0/24 网段上连接主机并且以root权限执行useradd 命令。

www  ALL=(root)      NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su

允许www用户执行所有命令,除了passwd后加任意字符、passwd root和su这三类操作。

%wheel  ALL=(ALL)       ALL

centos7默认已经开放组%wheel这一行,之前的centos版本没有启用。(批量设定权限,wheel是自带的一个组)。

%wheel        ALL=(ALL)       NOPASSWD: ALL  NOPASSWD: ALL

不输入密码执行任何命令 。

3、演示

(1)我们在root 用户下修改用户huoserver的权限,用 sudo 命令。

(2) 我们给huoserver用户在任何地方都赋予了root用户的任何权限。

(3)接下来我们切到huoserver用户下,在根目录下执行创建目录操作,发现权限不够;但是我们使用sudo命令,并且输入用户的密码,便可以成功执行在root用户下才可以执行的操作。

 

 

 

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

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

相关文章

JavaScript+B/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能?医院云LIS检验系统源码

JavaScriptB/S版云LIS系统源码ASP.NET CORE 3.1 MVC云LIS系统如何实现样本追踪的预警功能?医院云LIS检验系统源码 实验室信息管理系统(Trasen Laboratory Information Management System)是一套专业的医疗实验室信息管理软件,包含…

【C++】深入理解string类

一、熟悉string类 1.1 string类的由来: C语音中的字符串需要我们自己管理底层空间,容易内存泄露。而C是面向对象语音,所以它把字符串封装成一个string类。 C中对于string的定义为:typedef basic_string string; 也就是说C中的str…

Linux 进程间通信之匿名管道

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux知识分享⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 目录 前言 一. 进程间通信介绍 1.进程间通…

富唯智能案例|双3D相机引导衔架抓取铝型材

随着制造业的快速发展和自动化水平的不断提升,铝型材的自动化抓取和加工成为行业内的一大技术难题。铝型材因其轻便、耐腐蚀、易加工等特点,广泛应用于建筑、汽车、电子等领域。然而,铝型材的形状多样、尺寸不一,以及生产线上的高…

4G小车的公网直播推流

一直想做一个小车, 可以通过4G推流, 没想到现在很多云服务提供商, SRS云服务器已经可以一键搭建了. 硬件方面, 就是一个1126驮着一个3516, 1126负责4G连接, 转流到Intenet, 3516负责vi_venc_rtsp 思路如下, 我的1126的摄像头一直没能横过来, 所以就不用1126的摄像头了, 先用35…

SpringBoot配置HTTPS及开发调试

前言 在实际开发过程中,如果后端需要启用https访问,通常项目启动后配置nginx代理再配置https,前端调用时高版本的chrome还会因为证书未信任导致调用失败,通过摸索整理一套开发调试下的https方案,特此分享 后端配置 …

项目管理-项目管理科学基础

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 1.项目管理科学基础--主要内容 项目管理科学基础,以下讲解两方面的内容:工程经济学、运筹学。 2.具体知识点 2…

使用Postman对@RequestPart和HttpServletRequest组合传参方式

使用Postman对RequestPart和HttpServletRequest组合传参方式 方法代码如下: /*** 发布*/ApiOperation("发布")ApiImplicitParams({ApiImplicitParam(name "req", value "json格式", dataType "Map", dataTypeClass Ma…

Docker-Compose概述与简单编排部署

目录 前言 一、Docker-Compose 概述 1、Docker-Compose 概念 2、Docker-Compose 优缺点 2.1 Docker-Compose 优点 2.2 Docker-Compose 缺点 3、Docker-Compose与Docker-Swarm的区别 二、两大文件格式 1、YAML 文件格式 2、JOSON 文件格式 3、YAML 与 JOSON 格式的区…

【C++】:const成员,取地址及const取地址操作符重载

目录 一,const成员二,取地址及const取地址操作符重载 一,const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的…

力扣刷题第0天:只出现一次的数字

目录 第一部分:题目描述 ​第二部分:题目分析 第三部分:解决方法 3.1思路1: 双指针暴力求解 3.2 思路2:异或运算 第四部分:总结收获 第一部分:题目描述 第二部分:题目分析 由图片分析可得,该题目对算法时间复杂度有一定的要求时间复杂度为O(N)&a…

Linux搭建mysql环境

搭建 MySQL 环境 1、使用 wget 下载安装包,下载到 opt 目录中 wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装 MySQL 公钥 rpm -i mysql57-community-release-el7-10.noarch.rpmrpm --import https://repo.mysql.com/RPM-GP…

【算法刷题 | 动态规划02】5.02(不同路径、不同路径||、整数拆分、不同的二叉搜索树)

文章目录 5.不同路径5.1题目5.2解法一:深度搜索5.2.1深度搜索思路5.2.2代码实现 5.3解法二:动规5.3.1动规思路5.3.2代码实现 6.不同路径||6.1题目6.2解法:动规6.2.1动规思路(1)dp数组以及下标含义(2&#x…

python学习笔记B-18:序列结构之集合--集合的创建、操作与删除

集合的创建、常用操作和删除方法: s {1,2,3,4,5,} print(s)s set() #创建了一个空集合 print(s,type(s))s {} #创建了一个空字典 print(s, type(s))s set("helloworld") print(s) #集合内容是无序的,不重复,所以顺序混乱…

VG做mirror引起的块偏移

事件起因 Oracle10.2环境 Aix操作系统使用aix的lvm技术。制作vg的mirror。以此来替换掉老的存储。 做mirror前,数据库已完全关闭 故障现象 在启动数据库时,发现IO错误。该系统的spfile,ctl,dbf均是用lv做的裸设备。其中dbf是使…

STM32项目设计:基于stm32f1的智能门锁(附项目视频全套教程)

最近假期比较闲,拿着之前剩下的模块做了一个小玩具, 先制定一下此次玩具的规划,也可以理解为简易项目书。 开发软件:keil 硬件选型:STM32F103C8T6、RFID读卡器、oled屏幕、按键模块、蓝牙通信模块、蜂鸣器、舵机; 上位机: 1.上位机可以对密…

pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx 文件读取漏洞复现

0x01 产品简介 pkpmbs 建设工程质量监督系统是湖南建研信息技术股份有限公司一个与工程质量检测管理系统相结合的,B/S架构的检测信息监管系统。 0x02 漏洞概述 pkpmbs 建设工程质量监督系统 Ajax_operaFile.aspx接口处存在文件读取漏洞,未经身份认证的攻击者可以利用漏洞读…

【C++】拷贝复制:拷贝构造函数的使用

欢迎来到CILMY23的博客 本篇主题为:拷贝复制:拷贝构造函数的使用 博客主页:CILMY23-CSDN博客 个人专栏:Python | C | C语言 | 数据结构与算法 感谢观看,支持的可以给个一键三连,点赞关注收藏。 写在前头…

【趣味实践】KataGo+Sabaki搭建Ai围棋助手

前言 最近和同门在比试围棋,结果被爆虐,于是想借助Ai治治“嚣张”的他。 KataGo简介 继2016年AlphaGo出圈以来,已有不少Ai模型,其中部分如下图[1]所示。 在线围棋对弈网站OGS上,使用KataGo(https://online-go.com/)这…

什么是限流?常见的限流算法

目录 1. 什么是限流 2. 常见限流算法 3. 固定窗口算法 4. 滑动窗口算法 5. 漏桶算法 6. 令牌桶算法 7. 限流算法选择 1. 什么是限流 限流(Rate Limiting)是一种应用程序或系统资源管理的策略,用于控制对某个服务、接口或功能的访问速…