Linux系统中文件权限详解

一、Linux文件权限设计

        Linux系统中任何内容都可以用文件表示,其对文件设计了一套权限进行管理;文件权限共有11个字符,从左向右共分为5段(每段的具体说明如下表Linux权限设计说明所示):

Linux权限设计说明
字符说明

第1个字符

第1个字符表示【文件类型】(其中【-】表示文件、【d】表示目录、【l】表示软链接(也就是windows里面的快捷方式)、【b】表示设备)
第2、3、4个字符第2、3、4个字符表示文件【所属用户的权限】(user)
第5、6、7个字符第5、6、7个字符表示文件【所属用户组的权限】(group)
第8、9、10个字符第8、9、10个字符表示文件【所属其他用户的权限】(other)
第11个字符第11个字符表示【开启selinux的状态下创建的;即这个文件受到selinux的保护】

二、文件权限说明和操作

2.1、文件权限说明

        Linux是采用用户、用户组、其他用户组成的权限体系(简称:ugo);每个用户权限使用三个字符表示,共9个字符,一位都不能少,没有权限的字符使用空权限(-)表示,如下图所示:

权限字符串值表示内容说明
序号权限字符串值说明
r4全称(read)表示拥有文件的读取权限
w2全称(write)表示拥有文件的写入权限
x1全称(executable)表示拥有文件的可执行权限
-0表示空权限,表示没有文件的任何操作权限
ugo权限字符串值组合对照表
ugo权限字符串值组合ugo权限字符串组合值ugo权限说明
---0空权限
--x1执行权限
-w-2写入权限
--wx3写入和执行权限
r--4读取权限
r-x5读取和执行权限
rw-6读取和写入权限
rwx7读取、写入和执行权限

2.2、禁用SElinux权限

一文带你看懂 SELinux 是什么? - 红帽安全增强型 Linux(SELinux)由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成,是一种采用安全架构的 Linux 系统,能够让管理员更好地管控哪些人可以访问系统。icon-default.png?t=N7T8https://www.redhat.com/zh/topics/linux/what-is-selinux

        安全增强型 Linux(SELinux)是一种采用安全架构的 Linux® 系统,它能够让管理员更好地管控哪些人可以访问系统。它最初是作为 Linux 内核的一系列补丁,由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成。SELinux 于 2000 年发布到开源社区,并于 2003 年集成到上游 Linux 内核中。

        SELinux 定义了每个人对系统上的应用、进程和文件的访问控制。利用安全策略(一组告知 SELinux 哪些能访问,哪些不能访问的规则)来强制执行策略所允许的访问。 

        SElinux是负责Linux系统安全的,但是启用它后会变得很麻烦,安全和便利是冲突的;红帽系的系统(redhat、centos等)都默认都有这个机制且是启用的;一般来说这个内容我们是关闭的,有关安全方面的控制可以通过其他方法来控制。

 1、先查看Linux的SELinux权限

# 查看Linux的Selinux状态命令:
sestatus

 2、禁用Linux系统的SELinux

使用具有超级管理员权限的账户登录Linux,一般是root用户,使用如下命令进行打开修改:

# 1、打开SELinux配置文件命令:
vi /etc/selinux/config# 2、SELinux修改完成后重启Linux系统(只有重启系统后才会生效)重启系统命令是:
reboot# 3、Linux重启完成后再查看一下SELinux的状态是否为禁用命令:
sestatus

 

 

2.3、文件权限的修改

        我们在自己的账户下创建一个文件,默认权限是【-rw-r--r--.】(表示创建该文件的用户拥有文件的读取和写入权限,而该文件属于的用户组和其他用户只拥有读取权限,且该文件受selinux保护),如下图所示(创建一个名为newfile.txt的文件):

注意:我这里创建的文件权限没有最后的.是因为我已经把selinux禁用了。

文件权限的修改命令
序号文件权限修改命令示例
1chmod -权限字母 文件名称
# 示例1、移除所有人读取newfile.txt文件的权限
chmod -r newfile.txt     # 示例2、移除所有人写newfile.txt文件的权限
chmod -w newfile.txt# 示例3、移除所有人执行newfile.txt文件的权限
chmod -x newfile.txt     
2chmod +权限字母 文件名称
# 示例1、添加所有人读取newfile.txt文件的权限
chmod +r newfile.txt     # 示例2、添加所有人写newfile.txt文件的权限
chmod +w newfile.txt# 示例3、添加所有人执行newfile.txt文件的权限
chmod +x newfile.txt     
3chmod u±权限字母 文件名称
# 示例1、添加文件所有者读取newfile.txt文件的权限
chmod u+r newfile.txt   # 示例2、移除文件所有者读取newfile.txt文件的权限
chmod u-r newfile.txt  # 示例3、添加文件所有者读取和写入newfile.txt文件的权限
chmod u+rw newfile.txt       # 示例4、移除文件所有者读取和写入newfile.txt文件的权限
chmod u-rw newfile.txt   
4chmod g±权限字母 文件名称
# 示例1、添加文件所属组读取newfile.txt文件的权限
chmod g+r newfile.txt   # 示例2、移除文件所属读取newfile.txt文件的权限
chmod g-r newfile.txt  # 示例3、添加文件所属读取和写入newfile.txt文件的权限
chmod g+rw newfile.txt       # 示例4、移除文件所属读取和写入newfile.txt文件的权限
chmod g-rw newfile.txt   
5chmod o±权限字母 文件名称
# 示例1、添加其他用户读取newfile.txt文件的权限
chmod o+r newfile.txt   # 示例2、移除其他用户读取newfile.txt文件的权限
chmod o-r newfile.txt  # 示例3、添加其他用户读取和写入newfile.txt文件的权限
chmod o+rw newfile.txt       # 示例4、移除其他用户读取和写入newfile.txt文件的权限
chmod o-rw newfile.txt   
6chmod 权限字母值 文件名称
# 也可以直接使用权限数值设置文件访问权限# 示例1、给文件newfile.txt所有者添加读写权限、文件所属组添加读权限、其他用户添加读权限(-rw-r--r--	644)
chmod 644 newfile.txt # 示例2、给文件newfile.txt所有者添加读写权限、文件所属组添加读权限、其他用户添加读权限(-rw-rw--r--	664)
chmod 664 newfile.txt# 示例3、给目录testdir所有者添加读写执行权限、文件所属组添加读和执行权限、其他用户添加读和执行权限(-rwxr-xr-x	755)
chmod 755 testdir

三、文件的用户和用户组

        Linux系统也是具有用户和用户组的概念,用户和用户组可以有三种关系【一对一、一对多、多对多】(即:一个用户对应一个用户组;一个用户可以对应多个用户组,同样一个用户组也可以对应多个用户)

3.1、用户管理

Linux中的用户
序号操作用户命令说明
1useradd 用户名称【useradd coffeemilk】表示创建coffeemilk用户
2passwd 用户名称【passwd coffeemilk】表示给coffeemilk用户设置或修改密码
3id 用户名称【id coffeemilk】表示查看coffeemilk用户是否存在
4lchage -l 用户名称

【lchage -l coffeemilk】表示查看coffeemilk用户状态信息

(注意:这里命令中的是小写字母l,不是数字1或者字母i)

5usermod -L 用户名称

【usermod -L coffeemilk】表示锁定用户coffeemilk,不允许登录系统

注意:如果该用户在执行锁定命令前已经登录,那么已经登录的还是可以正常操作;但是退出后就无法登录了

6usermod -U 用户名称【usermod -U coffeemilk】表示解除用户coffeemilk的锁定状态,可以登录系统
7userdel -r 用户名称【userdel -r coffeemilk】表示删除用户及其对应相关的配置内容

3.2、用户组管理

Linux中的用户组
序号操作用户组命令说明
1groupadd 用户组名称【groupadd testgroup】表示添加testgroup用户组
2cat /etc/group表示查看当前有哪些用户组,最新添加的用户组在该文件的最下面
3usermod -g 用户组名称 用户名称

【usermod -g testgroup coffeemilk】表示将用户coffeemilk的主组coffeemilk强制修改为testgroup

(注意:如果该用户拥有多个组,只需要使用该命令即可指定为一个主组)

4usermod -G 用户组名称 用户名称【usermod -G devgroup coffeemilk】表示给用户coffeemilk在添加一个用户组devgroup
5useradd -g 用户组名称 用户名称【useradd -g devgroup testuser】表示在创建用户testuser时指定用户组为devgroup
6groupmod -n 新用户组名称 旧用户组名称【groupmod -n dev devgroup】表示将旧用户名称devgroup修改为新的名称dev
7groupdel 用户组名称

【groupdel testgroup】表示删除用户组testgroup

(注意:删除用户组的时候需要先将使用了该用户组的用户修改到其他用户组,才能够删除成功)

 

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

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

相关文章

揭秘:企业如何防盗版软件

在当前的数字化时代,软件盗版问题一直困扰着软件开发者和企业。为了维护软件的合法权益,保护创新成果,许多企业采取了各种技术手段来防止软件被非法复制和分发。其中,白名单机制作为一种有效的防盗版软件手段,被广泛采…

Transformer模型:革新序列到序列任务的深度学习范式

在深度学习领域,序列到序列(Seq2Seq)任务是一类重要的问题,涉及到将一个序列转换为另一个序列的过程,如机器翻译、文本摘要、对话生成等。传统的序列到序列模型,如循环神经网络(RNN)…

vue2面试题——vuex

1. Vuex有哪些属性 state > 全局共享属性 getters > 针对于state数据进行二次计算 mutations > 存放同步方法的 actions > 存放异步方法的,并且是用来提交mutations的 modules > 把vuex再次进行模块的划分(进行细分,便于项目的…

查看哪个docker环境在占用gpu

前言 有时候发现某些docker占用gpu资源却没有训练,需要查清楚是哪个并且把它stop掉。 方法 在docker里面用nvidia-smi命令,没有pid显示,需要在外面使用。得到pid信息后,使用命令 docker top 15766f6eeaf7(容器ID) | grep 551…

gin框架中使用session的详细步骤和示例

gin框架中的Session是通过中间件Middleware的方式来使用的, 官方的gin-contrib提供了session包(通过对github.com/gorilla/sessions的二次封装实现),我们可以直接使用即可, session支持的存储方式有如下多种&#xff1…

书酒共舞:品味文字之韵,沉醉酒香之境

在喧嚣的都市中,我们常常渴望找到一片宁静的角落,让心灵得到片刻的休憩。此刻,一杯雷盛红酒与一本心仪的书籍,便成了很好的伴侣,它们相互映衬,共同编织出一幅优雅的画卷,让我们在品味中感受文字…

分支策略指南 | 发布分支、基于主干的分支、功能分支等常见分支策略利弊分析、版本控制工具Perforce Helix Core全新轻量级分支功能解析

对于希望加快工作流程、按时完成任务并减少代码错误的团队来说,拥有专用的分支策略至关重要。但是,面对各种不同的分支策略(包括发布分支、基于主干的分支、功能分支等),如何确定哪一种分支策略更符合团队需求&#xf…

第十六站:Java珊瑚红——Web开发的活力之源

Java在Web开发领域扮演着极其重要的角色,其生态系统提供了多种技术来构建高效、可维护的Web应用程序。下面我们将通过源代码示例,来探讨Servlet、JSP、Spring MVC和RESTful API在Java Web开发中的应用。 Servlet Servlet是Java EE规范的一部分&#xf…

数据处理神器Elasticsearch_Pipeline:原理、配置与实战指南

文章目录 📑引言一、Elasticsearch Pipeline的原理二、Elasticsearch Pipeline的使用2.1 创建 Pipeline2.2 使用 Pipeline 进行索引2.3 常用的 Processor 三、实际应用场景3.1 日志数据处理3.2 数据清洗和标准化3.3 数据增强 四、最佳实践4.1 性能优化4.2 错误处理4…

Java面试题:Redis为什么速度快

Redis为什么速度快 Redis是纯内存操作 采用单线程,避免不必要的上下文切换可竞争条件 多线程还要考虑线程的安全问题 使用I/O多路复用模型,非阻塞IO I/O多路复用模型 因为Redis是纯内存操作,执行速度非常快,性能的瓶颈是网络延迟而非执行速度 I/O多路复用模型主要就是实…

全球视角下的网络安全法规

在全球范围内,网络安全法规的发展已成为各国政府关注的焦点。随着互联网的快速发展和信息技术的广泛应用,网络安全问题日益凸显,为此,各国纷纷出台了相应的网络安全法律法规,以应对不断演变的网络威胁并维护网络空间的…

Fusion WAN:企业出海与全球组网的数字网络底座

众多中国企业与品牌正将目光投向海外市场,积极寻求发展新机遇,并且在这一过程中取得了显著的成果。"出海"战略已经成为一些企业转型升级的关键选择。 随着国内市场的竞争日益激烈,越来越多的企业开始寻求海外市场的拓展&#xff0c…

@NestedConfigurationProperty注解嵌入配置类不生效

问题 在SmsProperties中嵌入AliyunSmsProperties,在代码中通过SmsProperties读取AliyunSmsProperties的配置为null导致无法启动。两个配置类如下: Data ConfigurationProperties(prefix "sms") public class SmsProperties {NestedConfigur…

11年之约 聚焦上海 | 亚信科技邀您相约2024 MWC上海展

关于亚信安慧AntDB数据库 AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年&a…

深入理解PHP命名空间

在PHP项目中,命名空间(namespace)是一个非常重要的特性。它不仅帮助开发者组织代码,还能避免类、函数、常量等命名冲突问题。本文将详细介绍PHP命名空间的概念、使用方法和最佳实践。 一、什么是命名空间? 命名空间…

淘客返利平台的前端架构与优化

淘客返利平台的前端架构与优化 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在当前互联网时代,淘客返利平台已经成为电商生态的重要组成部分。为…

windows@局域网或蓝牙文件传输@共享文件夹@就近共享

文章目录 windows系统下的简单共享文件方案👺就近共享设置共享文件夹(推荐)方法1:使用shrpubw程序引导创建方法2:使用图形界面创建右键设置共享文件夹 查看所有已经共享的文件夹👺停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题😊…

10个国内免费AI绘画网站汇总【2024最新】

迎战MidJourney和Stable Diffusion:10款国产AI绘画神器,让你轻松创作出超凡艺术品!不论你是初学者还是资深艺术家,这些AI绘画平台都能帮你轻松入门。快来探索这些AI绘画网站,释放你的创意潜能! 1、AI绘画创…

MapStruct参数拷贝

我们先看看前面的部分代码 Override public UserDto getUserById(Integer userId) {User user userDaoService.getById(userId);UserDto userDto new UserDto();BeanUtils.copyProperties(user, userDto);return userDto; } 我们上面代码里面可以看到,处理参数和…

【Android】AppCompatSeekBar只扩大触摸区域而外观不变

实现方案&#xff1a; 首先&#xff0c;SeekBar布局如下&#xff0c;不直接调整SeekBar的尺寸&#xff0c;而是为其添加一个包裹的FrameLayout作为透明覆盖层。 <FrameLayoutandroid:id"id/touch_overlay"android:layout_width"wrap_content" <!--…