【Linux系统编程】第七弹---权限管理操作(上)

 ✨个人主页: 熬夜学编程的小林

💗系列专栏: 【C语言详解】 【数据结构详解】【C++详解】【Linux系统编程】

目录

1、修改文件权限的做法(一)

2、有无权限的表现

总结


上一弹我们讲解了Linux权限概念相关的知识,但是我们只知道有什么权限,如何查看权限,但是根据我们常识可以知道,限制是可以解除和添加的,因此权限也不例外,也可以进行修改操作,这一弹我们就详细讲解权限的管理的相关操作

1、修改文件权限的做法(一)

一个文件的权限,谁能够修改呢?

在Linux中,只有文件的拥有者和root能够修改文件的权限。


1.chmod 指令

语法:

chmod [选项] 权限 文件名


功能:

改变文件或目录的访问权限,用它控制文件或目录的访问权限。


常用选项:

-R :递归处理,将指定目录下的所有文件及子目录一并处理


用户表示符+/-=权限字符

+ : 向权限范围增加权限代号所表示的权限
- :  向权限范围取消权限代号所表示的权限
= : 向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组
o:其它用户
a:所有用户

举例:

[lin@VMCentos7 ~]$ touch 1.txt  # 创建一个文件
[lin@VMCentos7 ~]$ ll
-rw-rw-r-- 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod u+x 1.txt  # 给1.txt文件的拥有者增加x(执行)权限
[lin@VMCentos7 ~]$ ll # 查看文件详细信息
-rwxrw-r-- 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod u-rw 1.txt  # 给1.txt文件的拥有者取消rw(读写)权限 可有对个顺序,且与顺序无关
[lin@VMCentos7 ~]$ chmod g-r 1.txt   # 给1.txt文件的所属组取消r(读)权限
[lin@VMCentos7 ~]$ ll
---x-w-r-- 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod o+x 1.txt   # 给1.txt文件的其他用户添加x(执行)权限
[lin@VMCentos7 ~]$ ll
---x-w-r-x 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod a+r 1.txt   # 给1.txt文件的所有用户添加r(读)权限
[lin@VMCentos7 ~]$ ll
-r-xrw-r-x 1 lin lin 0 Mar 27 18:15 1.txt

 注意:选项还可以用逗号隔开,分别增加/取消权限

[lin@VMCentos7 ~]$ ll
-r-xrw-r-x 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod u+w,g+x,o+w 1.txt # 给1.txt文件拥有者增加w权限,所属组增加x权限,其他用户添加w权限
[lin@VMCentos7 ~]$ ll
-rwxrwxrwx 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chmod u-rw,o-wx 1.txt
[lin@VMCentos7 ~]$ ll
---xrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt


 

2.chown 指令

语法:

chown [选项] 用户名 文件名                  # 仅更改拥有者

chown [选项] 拥有者:所属组 文件名      # 更改拥有者和所属组


功能:

更改文件或目录的拥有者和所属组。

常见选项:

-R:递归处理,将指定目录下的所有文件及子目录一并处理

注意:普通用户不能强制修改拥有者,需使用root权限修改,即sudo。

普通用户举例:

[lin@VMCentos7 ~]$ ll
-rwxrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ chown jkl 1.txt  # 将1.txt文件的拥有者改为jkl
chown: changing ownership of '1.txt': Operation not permitted  # 普通用户不允许强制修改拥有者,解决办法是用root权限
[lin@VMCentos7 ~]$ chown xiao 1.txt # 将1.txt文件的拥有者改为xiao 但是没有xiao这个用户,因此报错
chown: invalid user: ‘xiao’# 解决办法:
[lin@VMCentos7 ~]$ ll
-rwxrwxr-- 1 lin lin 0 Mar 27 18:15 1.txt
[lin@VMCentos7 ~]$ sudo chown jkl 1.txt # 使用sudo提权 
[sudo] password for lin:  # 输入用户密码
lin is not in the sudoers file.  This incident will be reported. # 说明sudo没有配置,不能使用,此时我们用一个配置的用户来演示[jkl@VMCentos7 linux-learning-warehouse]$ ll
-rw-rw-r-- 1 jkl jkl     0 Mar 27 19:19 1.txt # 当前拥有者为jkl
[jkl@VMCentos7 linux-learning-warehouse]$ sudo chown lin 1.txt # 将拥有者修改成lin
[sudo] password for jkl: 
[jkl@VMCentos7 linux-learning-warehouse]$ ll
-rw-rw-r-- 1 lin jkl     0 Mar 27 19:19 1.txt # 拥有者确实修改成了lin

root用户举例:

[root@VMCentos7 ~]# ll
-rw-r--r-- 1 root root    0 Mar 21 00:39 1.txt
[root@VMCentos7 ~]# chown lin 1.txt # 将拥有者改成lin
[root@VMCentos7 ~]# ll
-rw-r--r-- 1 lin  root    0 Mar 21 00:39 1.txt # 拥有者确实被改成lin

3.chgrp 指令

格式:

chgrp [选项] 用户组名 文件名


功能:

修改文件或目录的所属组



常用选项:

-R :递归修改文件或目录的所属组

注意:普通用户不能强制修改所属组,需使用root权限修改,即sudo。

普通用户举例:

[jkl@VMCentos7 linux-learning-warehouse]$ ll
-rw-rw-r-- 1 lin jkl     0 Mar 27 19:19 1.txt  # 所属组为jkl
[jkl@VMCentos7 linux-learning-warehouse]$ chgrp lin 1.txt   # 普通用户不允许修改所属组
chgrp: changing group of '1.txt': Operation not permitted 
[jkl@VMCentos7 linux-learning-warehouse]$ sudo chgrp lin 1.txt # 使用root权限修改所属组
[sudo] password for jkl: 
[jkl@VMCentos7 linux-learning-warehouse]$ ll
-rw-rw-r-- 1 lin lin     0 Mar 27 19:19 1.txt  # 所属组修改成lin

同时修改拥有者和所属组举例(root演示):

[root@VMCentos7 ~]# ll
-rw-r--r-- 1 root root    0 Mar 21 00:39 2.txt # 拥有者所属组均为root
[root@VMCentos7 ~]# chown lin:jkl 2.txt # 将拥有者改为lin 所属组改为jkl
[root@VMCentos7 ~]# ll
-rw-r--r-- 1 lin  jkl     0 Mar 21 00:39 2.txt # 修改成功

2、有无权限的表现

拥有者满足举例:

[lin@VMCentos7 ~]$ ll
total 0
---------- 1 lin lin 0 Mar 27 18:15 1.txt # 将1.txt的所有权限改为-,即没有任何权限
[lin@VMCentos7 ~]$ cat 1.txt  # 以lin用户查看1.txt文件,虽然拥有者为lin,但是没有读权限,因此不能查看该文件
cat: 1.txt: Permission denied
[lin@VMCentos7 ~]$ echo "hello Linux" > 1.txt # 没有写权限因此不允许给文件写入数据
-bash: 1.txt: Permission denied
[lin@VMCentos7 ~]$ ./1.txt   # 没有可执行权限
-bash: ./1.txt: Permission denied

 所属组满足举例:

[lin@VMCentos7 ~]$ ll
total 0
----rwx--- 1 jkl lin 0 Mar 27 18:15 1.txt # 拥有者为jkl 所属组为lin
[lin@VMCentos7 ~]$ cat 1.txt # 所属组为lin 且有读权限 因此可以查看文件
[lin@VMCentos7 ~]$ echo "hello Linux" > 1.txt # 所属组为lin 且有写权限 因此可以将数据写入文件
[lin@VMCentos7 ~]$ cat 1.txt
hello Linux[lin@VMCentos7 ~]$ ll
total 4
----rwx--- 1 lin lin 12 Mar 27 19:51 1.txt # 拥有者所属组均为jkl 
[lin@VMCentos7 ~]$ cat 1.txt   # 所属组有读权限为什么不能查看文件呢?
cat: 1.txt: Permission denied

上述两大段命令中,为什么拥有者均有读写执行权限,但是第二种情况却不能读写执行操作呢?

因为Linux对用户的识别只有一次

第一种情况:拥有者为jkl,拥有者于当前用户不匹配,因此会去匹配所属组,所属组与当前用户匹配,因此执行所属组的权限,所以可以执行读写执行操作。

第二种情况:拥有者为lin,拥有者于当前用户匹配,因此执行拥有者的权限,所以不可以执行读写执行操作。

总结


本篇博客就结束啦,谢谢大家的观看,如果公主少年们有好的建议可以留言喔,谢谢大家啦!

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

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

相关文章

【C++学习】STL之空间配置器之一级空间配置器

文章目录 📊什么是空间配置器✈STL 提供六大组件的了解👀为什么需要空间配置器👍SGI-STL空间配置器实现原理🌂一级空间配置器的实现 📊什么是空间配置器 空间配置器,顾名思义就是为各个容器高效的管理空间…

python爬虫 - 爬取html中的script数据(从zum.com爬取新闻信息 )

文章目录 1. 分析页面内容数据格式2. 使用re.findall方法,编写爬虫代码3. 使用re.search 方法,编写爬虫代码 1. 分析页面内容数据格式 (1)打开 https://zum.com/ (2)按F12(或 在网页上右键 --…

Tomcat启动闪退疑难排解全攻略:资深技术视角详解(详细)

Tomcat 启动闪退问题是在尝试启动Apache Tomcat服务器时,遇到的一种情况,其中服务器进程无法正常运行并立即退出。这个问题可能是由于多种原因造成的,包括配置错误、端口冲突、类加载问题等。作为一个资深技术人员,解决这类问题需…

【Java网络编程】TCP通信(Socket 与 ServerSocket)和UDP通信的三种数据传输方式

目录 1、TCP通信 1.1、Socket 和 ServerSocket 1.3、TCP通信示例 2、UDP的三种通信(数据传输)方式 1、TCP通信 TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象 通信之前要保证连接已经建立(注意TCP是一…

PostgreSQL中的索引类型有哪些,以及何时应选择不同类型的索引?

文章目录 索引 解决方案和示例代码 PostgreSQL提供了多种索引类型,每种类型都有其特定的应用场景和优势。选择合适的索引类型可以显著提高查询性能,减少数据库负载。 索引 以下是PostgreSQL中常见的索引类型及其适用场景: 1. B-tree 索引 …

BFS解决FloodFill算法:(Leetcode:733. 图像渲染)

题目链接:733. 图像渲染 - 力扣(LeetCode) 使用广度优先遍历算法解决该问题: 从初始位置开始搜索,初始位置符合条件就入栈,并修改初始位置值。初始位置出栈。 再从初始位置开始广度优先搜索(…

成都直播产业园「天府锋巢」电商流量深度变现,助力企业降本增效

天府锋巢园区环境 天府锋巢直播基地 其他重点特色产业服务 等您来解锁! 「锋巢资讯 聚焦天府 诚邀企业 敬请关注」

【wsl】安装nvm配置

安装nvm 参考https://github.com/nvm-sh/nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bashexport NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

【深度学习实战(16)】语义分割性能评价指标PA,MIoU介绍

一、混淆矩阵 混淆矩阵就是统计分类模型的分类结果,即:统计归对类,归错类的样本的个数,然后把结果放在一个表里展示出来,这个表就是混淆矩阵。 对于二分类问题,将类别1称为正例(Positive&#…

使用Docker搭建本地Nexus私有仓库

0-1开始Java语言编程之路 一、Ubuntu下Java语言环境搭建 二、Ubuntu下Docker环境安装 三、使用Docker搭建本地Nexus Maven私有仓库 四、Ubuntu下使用VisualStudioCode进行Java开发 你需要Nexus Java应用编译构建的一种主流方式就是通过Maven, Maven可以很方便的管理Java应用的…

【THM】Linux Privilege Escalation(权限提升)-初级渗透测试

介绍 权限升级是一个旅程。没有灵丹妙药,很大程度上取决于目标系统的具体配置。内核版本、安装的应用程序、支持的编程语言、其他用户的密码是影响您通往 root shell 之路的几个关键要素。 该房间旨在涵盖主要的权限升级向量,并让您更好地了解该过程。无论您是参加 CTF、参加…

【算法学习】线段树基础版

一 线段树 1.概念 线段树可以理解为一个二叉树,如果是利用线段树求区间的和,那么每个结点的权值维护的是结点所维护区间的和,再将该区间一分为二,分别交由左右儿子维护。 拿区间1 - 4的和来举例子, 根结点维护的是区…