Linux 权限系统和软件安装(二):深入理解 Linux 权限系统
在 Linux 的世界里,权限系统犹如一位忠诚的卫士,严密守护着系统中的文件与目录,确保只有具备相应权限的用户才能进行操作。与其他一些操作系统不同,Linux 并不依据文件后缀名来标识文件的操作权限,而是构建了一套独特且强大的权限体系。对于学习 Java 全栈开发的我们而言,熟练掌握 Linux 权限系统,无论是在日常开发环境搭建,还是未来企业级项目部署与运维中,都至关重要。今天,让我们一同深入探索 Linux 的权限系统。
一、Linux 权限系统基础认知
(一)权限划分
Linux 系统中的权限主要分为三类:读(r)、写(w)、执行(x)。但这些权限对于文件和目录而言,有着不同的含义。

- 文件权限
- r(可读):当一个文件具有 “r” 权限时,意味着用户能够查看该文件的内容。例如,在 Java 开发中,我们编写的 Java 源文件(.java 后缀),若开发人员对其具有 “r” 权限,就能打开文件查看代码逻辑。
- w(可写):“w” 权限允许用户修改文件的内容。在项目开发过程中,开发人员需要对 Java 源文件、配置文件等拥有 “w” 权限,才能进行代码修改、配置调整等操作。但如果权限设置不当,非授权人员获得 “w” 权限,可能会恶意篡改代码,影响项目的正常运行。
- x(可执行):对于可执行文件,如编译后的 Java 字节码文件(.class 后缀)或一些脚本文件(.sh 后缀),“x” 权限决定了用户能否运行该文件。在部署 Java 项目时,需要确保相关的启动脚本具有 “x” 权限,才能顺利启动项目服务。
- 目录权限
- r(可读):赋予目录 “r” 权限后,用户可以查看目录中的内容,即列出目录下的所有文件和子目录。在管理 Java 项目的工作空间时,开发人员需要对项目目录具有 “r” 权限,才能查看其中的文件结构和资源。
- w(可写):拥有目录的 “w” 权限,用户能够在该目录中创建新文件、修改现有文件的名称以及删除文件或子目录。在 Java 项目开发中,当需要添加新的类文件、删除无用的临时文件时,就需要对项目目录拥有 “w” 权限。
- x(可执行):“x” 权限对于目录而言,决定了用户能否进入该目录。如果没有 “x” 权限,即便对目录有 “r” 权限,也无法使用
cd命令进入该目录。例如,在一个包含多个项目模块的父目录中,若开发人员对某个子模块目录没有 “x” 权限,就无法深入其中进行操作。
(二)查看权限
在 Linux 系统中,使用ll -h命令可以以人性化的模式查看目录中的权限。当执行该命令后,会看到类似如下的显示:
rw-r--r--
这里的三组权限分别描述了属主(user)、所属组(group)和其他人(other)的权限。
- 属主:即文件或目录的创建者,拥有者。在 Java 项目开发中,通常由开发人员创建项目文件和目录,此时该开发人员就是属主。属主对自己创建的文件和目录往往具有较高的权限,以便进行全面的管理和操作。
- 所属组:属主所在的用户组。在企业级 Java 开发项目中,一个项目团队可能会被划分到同一个用户组。通过所属组权限设置,可以方便地对团队成员的权限进行统一管理。例如,团队中的所有开发人员都属于 “java_dev_group” 用户组,通过设置该组对项目目录的权限,就能控制组内成员对项目资源的访问级别。
- 其它人:既不是属主,也不是所属组成员的用户。合理设置 “其他人” 的权限,可以保障系统资源的安全性,防止未授权的外部人员随意访问和操作。
(三)修改权限
修改权限使用chmod命令,其语法为chmod [选项] 权限模式 文件/目录名称。常见选项及用法如下:
- 选项 -R:该选项用于递归性设置权限,只对目录有效。当对一个目录使用
-R选项时,不仅会修改该目录本身的权限,还会递归地修改目录下所有子目录和文件的权限。 - 权限模式设置方式
- 第 1 种模式:通过明确指定属主(u)、所属组(g)、其他人(o)的权限来设置。例如:
chmod u=rwx,g=rw-,o=--- anaconda-ks.cfg
这里表示将anaconda-ks.cfg文件的属主权限设置为可读、可写、可执行(rwx);所属组权限设置为可读、可写(rw-);其他人权限设置为无任何权限(---)。在 Java 项目中,如果一个配置文件只允许项目负责人(属主)进行全面操作,团队成员(所属组)只能查看和修改,而外部人员(其他人)不能访问,就可以采用这样的权限设置。
- 第 2 种模式:采用 “+” 或 “-” 来修改权限。例如:
chmod u-x,g-w anaconda-ks.cfg
此命令表示去除anaconda-ks.cfg文件属主的执行权限(u-x),去除所属组的写权限(g-w)。在项目开发过程中,有时可能需要临时调整某些用户或用户组的权限,这种方式就很便捷。
- 第 3 种模式:采用数字来修改权限。权限数字对应关系为:4 代表读(r),2 代表写(w),1 代表执行(x),0 代表无权限(--)。例如:
chmod 600 anaconda-ks.cfg
这里的 “600” 表示属主权限为可读、可写(4 + 2 = 6),所属组和其他人权限为无权限(0)。这种数字表示法简洁明了,在批量设置权限时尤为方便。
3. 给目录授权示例
chmod -R 777 dzkd/
该命令递归地将 “dzkd” 目录及其所有子目录和文件的权限设置为属主、所属组和其他人都具有可读、可写、可执行权限(rwx = 4 + 2 + 1 = 7)。但需要注意,这种设置会使目录及其内容的权限非常开放,在实际应用中应谨慎使用,特别是在涉及敏感信息的场景下。
(四)改变拥有者
在 Linux 系统中,可以使用chown命令改变文件或目录的拥有者和所属组。其语法为chown [选项] 新所有者[:新组] 文件或目录。例如:
chown iwe3 dzkd/
这条命令将 “dzkd” 目录的属主修改为 “iwe3”。在企业开发中,当项目成员变动,某个开发人员接手了另一位开发人员的工作,可能就需要将相关项目文件和目录的属主进行变更。
chown iwe3:iwe3 dzkd/
此命令不仅修改了 “dzkd” 目录的属主为 “iwe3”,还将所属组也修改为 “iwe3” 所在的组。通过合理变更属主和所属组,可以更好地管理项目资源的访问权限,确保只有相关人员能够对资源进行操作。
二、未来在企业工作的小技巧
- 基于项目角色的权限管理:在企业级 Java 全栈开发项目中,根据不同的项目角色,如项目经理、开发人员、测试人员、运维人员等,设置不同的用户组,并为每个用户组分配相应的文件和目录权限。例如,项目经理可能需要对项目的所有文件和目录具有读写执行权限,以便全面管理项目;开发人员对自己负责的模块文件具有读写执行权限,对其他模块文件可能只有读权限;测试人员对测试相关的文件和目录具有读写权限等。通过这种精细化的权限管理,可以提高项目的安全性和协作效率。
- 定期权限审计:定期对项目文件和目录的权限进行审计,检查权限设置是否符合项目的安全策略和业务需求。可以编写脚本,定期扫描项目目录,检查属主、所属组和权限设置是否正确,是否存在权限过度开放或不合理的情况。例如,脚本可以检查是否有非项目组成员拥有项目文件的写权限,或者是否有敏感配置文件的权限设置过于宽松。一旦发现问题,及时进行调整,保障项目的安全性。
- 权限变更记录与通知:当对文件或目录的权限进行变更时,要做好详细的记录,包括变更的时间、原因、操作人以及变更前后的权限对比等信息。同时,通过邮件或内部通讯工具及时通知相关人员,确保项目团队成员都了解权限的变化,避免因权限变更导致的工作失误或误解。例如,当因为项目安全升级,对某些关键配置文件的权限进行收紧时,及时通知相关开发人员和运维人员,告知他们权限变更的影响和应对方法。
通过对 Linux 权限系统的深入学习,我们在 Linux 环境下的操作能力和安全意识得到了进一步提升。在后续的学习中,我们还将继续探索 Linux 系统的更多奥秘,包括软件安装等重要内容,为成为优秀的 Java 全栈开发者奠定坚实基础。
还请持续关注,后续更新虚拟机安装及Java环境配置教程
相关文章:
Linux 权限系统和软件安装(二):深入理解 Linux 权限系统
在 Linux 的世界里,权限系统犹如一位忠诚的卫士,严密守护着系统中的文件与目录,确保只有具备相应权限的用户才能进行操作。与其他一些操作系统不同,Linux 并不依据文件后缀名来标识文件的操作权限,而是构建了一套独特且…...
Windows 中的启动项如何打开?管理电脑启动程序的三种方法
在日常使用电脑时,我们经常会发现一些应用程序在开机时自动启动,这不仅会拖慢系统的启动速度,还可能占用不必要的系统资源。幸运的是,通过几个简单的步骤,你可以轻松管理这些开机自启的应用程序。接下来,我…...
uniapp邪门事件
很久之前在这篇《THREEJS 在 uni-app 中使用(微信小程序)》:THREEJS 在 uni-app 中使用(微信小程序)_uni-app_帶刺的小葡萄-华为开发者空间 中学到了如何在uniapp的微信小程序里接入three.js的3d模型 由于小程序自身很…...
DeepSeek学习教程 从入门到精通pdf下载:快速上手 DeepSeek
下载链接:DeepSeek从入门到精通(清华大学).pdf 链接: https://pan.baidu.com/s/1Ym0-_x9CrFHFld9UiOdA5A 提取码: 2ebc 一、DeepSeek 简介 DeepSeek 是一款由中国团队开发的高性能大语言模型,具备强大的推理能力和对中文的深刻理解。它广泛应用于智能办…...
MATLAB进阶之路:数据导入与处理
在MATLAB的学习旅程中,我们已经初步了解了它的基础操作。如今,我们将沿着这条充满惊喜的道路,迈向下一个重要的站点——数据导入与处理。这部分内容就像是为MATLAB注入了强大的能量,使其能够从现实的数据世界中汲取信息,然后像一位智慧的魔法师一样,巧妙地处理这些数据,…...
百度首页上线 DeepSeek 入口,免费使用
大家好,我是小悟。 百度首页正式上线了 DeepSeek 入口,这一重磅消息瞬间在技术圈掀起了惊涛骇浪,各大平台都被刷爆了屏。 百度这次可太给力了,PC 端开放仅 1 小时,就有超千万人涌入体验。这速度,简直比火…...
安全见闻
今天学了Windows操作系统和驱动程序的相关知识 Windows注册表 注册表是windows系统中具有层次结构的核心数据库 储存的数据对windows 和Windows上运行的应用程序和服务至关重要。注册表时帮助windows控制硬件、软件、用户环境和windows界面的一套数据文件。 打开注册表编辑器…...
PLC通讯
PPI通讯 是西门子公司专为s7-200系列plc开发的通讯协议。内置于s7-200 CPU中。PPI协议物理上基于RS-485口,通过屏蔽双绞线就可以实现PPI通讯。PPI协议是一种主-从协议。主站设备发送要求到从站设备,从站设备响应,从站不能主动发出信息。主站…...
Image Downloader下载文章图片的WordPress插件
源码介绍 一个用于下载图片的WordPress插件,包含下载统计功能,支持任何主题使用 用户点击下载后自动打包该文章所有原始图片,并把文章标题作为压缩包的文件名。 不占用服务器空间,也不占网盘空间,直接利用浏览器的性…...
乐享数科:供应链金融—三个不同阶段的融资模式
供应链金融是与产业链紧密结合的融资模式,它主要体现在订单采购、存货保管、销售回款这三个不同的业务阶段,并针对这些阶段提供了相应的金融服务。以下是这三个阶段中主要的融资模式及其特点: 供应链金融融资模式主要分为以下几种࿱…...
Jenkins 创建 Node 到 Windows
Jenkins 创建 Node 到 Windows 一. 新建 Node Dashboard -> Manage Jenkins -> Manage Nodes and Clouds Dashboard -> Nodes -> New Node 二. 配置节点 Node:节点名 Description:节点描述 Number of executors:节点最大同…...
halcon机器视觉深度学习对象检测,物体检测
目录 效果图操作步骤软件版本halcon参考代码本地函数 get_distinct_colors()本地函数 make_neighboring_colors_distinguishable() 效果图 操作步骤 首先要在Deep Learning Tool工具里面把图片打上标注文本, 然后训练模型,导出模型文件 这个是模型 mod…...
【分布式数据一致性算法】Gossip协议详解
在分布式系统中,多个节点同时提供服务时,数据一致性是核心挑战。在多个节点中,若其中一个节点的数据发生了修改,其他节点的数据都要进行同步。 一种比较简单粗暴的方法就是 集中式发散消息,简单来说就是一个主节点同时…...
蓝桥杯笔记——递归递推
递归 0. 函数的概念 我们从基础讲起,先了解函数的概念,然后逐步引入递归,帮助同学们更好地理解递归的思想和实现方式。 函数是程序设计中的一个基本概念,简单来说,它是一段封装好的代码,可以在程序中多次…...
Vue 3 + Vite 项目中配置代理解决开发环境中跨域请求问题
在 Vue 3 Vite 项目中,配置代理是解决开发环境中跨域请求问题的常见方法。通过在 Vite 的配置文件中设置代理,可以将前端请求转发到后端服务器,从而避免浏览器的同源策略限制。 1. 创建 Vue 3 Vite 项目 首先,确保你已经安装了…...
【复现DeepSeek-R1之Open R1实战】系列7:GRPO原理介绍、训练流程和源码深度解析
【复现DeepSeek-R1之Open R1实战】系列博文链接: 【复现DeepSeek-R1之Open R1实战】系列1:跑通SFT(一步步操作,手把手教学) 【复现DeepSeek-R1之Open R1实战】系列2:没有卡也能训模型!Colab跑Op…...
【Qt】可爱的窗口关闭确认弹窗实现
文章目录 实现思路界面构建交互逻辑实现颜色渐变处理圆形部件绘制 代码在主窗口的构造函数中创建弹窗实例ExitConfirmDialog 类代码ColorCircleWidget 类代码 今天在Qt实现了这样一个可互动的窗口(上图由于录屏工具限制没有录制到鼠标) 实现…...
服务器通过 ollama 运行deepseek r1
1、服务器环境简介 56核 CPU64G 内存无显卡已安装 Ollama 2、下载模型与配置 正常可以通过 ollama pull 或 ollama run 命令直接下载,但通常会遇到连接超时、找不到网址等总理。因此,可以使用国内的模型站进行下载,在这里使用魔塔查找模型…...
计算机毕业设计SpringBoot+Vue.jst网上购物商城系统(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
自制操作系统前置知识汇编学习
今天要做什么? 为了更好的理解书中内容,需要学习下进制分析和汇编。 汇编语言其实应该叫叫机器指令符号化语言,目前的汇编语言是学习操作系统的基础。 一:触发器 电路触发器的锁存命令默认是断开的,是控制电路触发器…...
Unity制作游戏——前期准备:Unity2023和VS2022下载和安装配置——附安装包
1.Unity2023的下载和安装配置 (1)Unity官网下载地址(国际如果进不去,进国内的官网,下面以国内官网流程为例子) unity中国官网:Unity中国官网 - 实时内容开发平台 | 3D、2D、VR & AR可视化 …...
深度学习(5)-卷积神经网络
我们将深入理解卷积神经网络的原理,以及它为什么在计算机视觉任务上如此成功。我们先来看一个简单的卷积神经网络示例,它用干对 MNIST数字进行分类。这个任务在第2章用密集连接网络做过,当时的测试精度约为 97.8%。虽然这个卷积神经网络很简单…...
LeetCodehot 力扣热题100 课程表
题目背景 这个问题要求我们判断是否可以完成所有课程的学习。每门课程可能依赖其他课程作为前置课程,构成了一个有向图。我们需要确定是否存在环,若存在环,说明课程之间互相依赖,无法完成所有课程;如果不存在环&#x…...
彻底卸载kubeadm安装的k8s集群
目录 一、删除资源 二、停止k8s服务 三、重置集群 四、卸载k8s安装包 五、清理残留文件和目录 六、删除k8s相关镜像 七、重启服务器 一、删除资源 # 删除集群中的所有资源,包括 Pod、Deployment、Service,任意节点执行 kubectl delete --all pod…...
【HarmonyOS Next】拒绝权限二次申请授权处理
【HarmonyOS Next】拒绝权限二次申请授权处理 一、问题背景: 在鸿蒙系统中,对于用户权限的申请,会有三种用户选择方式: 1.单次使用允许 2.使用应用期间(长时)允许 3.不允许 当用户选择不允许后࿰…...
便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets)
便携式动平衡仪Qt应用层详细设计方案(基于Qt Widgets) 版本:1.0 日期:2023年10月 一、系统概述 1.1 功能需求 开机流程:长按电源键启动,全屏显示商标动画(快闪3~4次)。主界面&…...
2 20 数据开发面试题汇总
下面是我在实习中协助面试 然后在牛客上挑选了一些完整的面试问题借助豆包完成的面经答案思路汇总 滴滴数据研发日常实习 一面 数据仓库认识维度建模之外还有哪些建模,有什么区别项目中数据仓库分了哪几层,为什么要分层Hadoop架构,你这些组…...
跟着李沐老师学习深度学习(十四)
注意力机制(Attention) 引入 心理学角度 动物需要在复杂环境下有效关注值得注意的点心理学框架:人类根据随意线索和不随意线索选择注意力 注意力机制 之前所涉及到的卷积、全连接、池化层都只考虑不随意线索而注意力机制则显示的考虑随意…...
Websocket——心跳检测
1. 前言:为什么需要心跳机制? 在现代的实时网络应用中,保持客户端和服务端的连接稳定性是非常重要的。尤其是在长时间的网络连接中,存在一些异常情况,导致服务端无法及时感知到客户端的断开,可能造成不必要…...
基于YOLO11深度学习的半导体芯片缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
