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

【关于Linux中权限管理】

文章目录

  • 一、文件访问者的分类
  • 二、文件类型和访问权限
  • 三、文件权限值的表示方法
  • 四、文件访问权限的相关设置方法
  • 五、目录的权限


一、文件访问者的分类

文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others

在Linux中的用户分为两类----超级用户(root)和普通用户
所谓超级用户就是指不受权限约束的用户,可以随意切换到其他普通用户(不用输入密码)。而普通用户切换到超级用户却需要输入root的密码。
使用sudo命令可以使普通用户在短时间内(一般是10-15分钟)以root的身份执行命令,但是第一次使用需要输入密码(普通用户的密码),还有个前提是该普通用户必须和root建立信任关系。


二、文件类型和访问权限

拿Linux中的两个文件举例子:
在这里插入图片描述

文件9_17的各种属性如下:
在这里插入图片描述
在这里插入图片描述
其中rwx代表的分别是可读、可写和可执行,若对应位置为"-",则所对应的用户类型不具有该操作的权限。
注意。LInux中不以文件后缀区分文件类型

具体文件类型分类如下:

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

Linux下,一切皆文件!


三、文件权限值的表示方法

字符串表示方法:
在这里插入图片描述
八进制数值表示方法:
在这里插入图片描述
解释:如果具有rwx对应的权限,则对应的比特位上数值为1,否则为0


四、文件访问权限的相关设置方法

chmod:

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:

R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式:

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

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

举个例子:
在这里插入图片描述

②三位八进制数字:
前面说过,rwx权限有无可以用数字来表示(三个比特位),若某一个用户类型拥有rwx所有权限,则其八进制数字应该为7(111),而用户类型有三种,就有对应的三个八进制数字来表示他们是否具有某一权限。

举个例子:
在这里插入图片描述
上面的633即(110 011 011),所对应的权限也就是(rw- -wx -wx)

需要知道的是,root几乎不受这些权限约束,也就是说,即使root没有这些权限,也可以执行相应的操作!


提一个问题:为什么文件被创建的时候,它的默认权限设置是我们看到的样子,而不是其他?

其实新建文件夹默认权限=0666
新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask(即先将umask按位取反,再将其结果跟mask进行按位与操作)

格式:umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

#umask 755
#umask //查看
#umask 044//设置


chown

功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名

实例:
在这里插入图片描述
可见,把文件传递给其他用户是不能“单方面”进行的。
解决方案有两个:①用sudo指令强制转移文件 ②先切换到root,然后直接改变文件拥有者

root用户将文件传递给其他用户,是可以单方面执行的,如下:

在这里插入图片描述
chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

与上面的操作类似,就不做演示了

还需要注意,改变自己创建的文件的所属组可以单方面进行,但改变其他用户的所属组不可以单方面进行。如下:
在这里插入图片描述


五、目录的权限

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.而这样是不安全的。

[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r–r–. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r–r–. 1 root root 0 9月 19 15:59 root.c
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 “/home/root.c”?y
[litao@localhost ~]$ exit
logout

为了解决这个问题,Linux引入了一个粘滞位的概念

[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 “/home/abc.c”?y
rm: 无法删除"/home/abc.c": 不允许的操作

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除

相关文章:

  • Opencv项目实战:11 使用Opencv高亮显示文本检测
  • 零基础转行,入职军工类测试方向,月薪10K | 既然选择了,就要全力以赴
  • python字典与集合还有数据类型转换
  • CH559L单片机ADC多通道采样数据串口打印案例
  • 2022保研夏令营/预推免记录:浙大计院直博/西湖电子直博/南大软院/厦大信院
  • windows域KCC知识点
  • 优化树莓派上的网站:免费申请SSL证书 3/4
  • 深度学习梯度下降优化算法(AdaGrad、RMSProp、AdaDelta、Adam)(MXNet)
  • 2022 最新的 Java 八股文合集来了,彻底解决各大大厂面试难题
  • 【SSM框架】Mybatis详解11(源码自取)之事务,缓存,ORM
  • Maven 基本使用及依赖管理。
  • 数组是内存的实现及栈和队列的数据结构
  • 记录:2022-9-30 打家劫舍 二叉搜索树中第K小的元素 公平锁 磁盘调度
  • 基于html宠物用品商城项目的设计与实现(学生网页设计作业源码)
  • 【Java复习】线程安全的 HashMap --- ConcurrentHashMap
  • 深入了解以太坊
  • [Vue CLI 3] 配置解析之 css.extract
  • [数据结构]链表的实现在PHP中
  • __proto__ 和 prototype的关系
  • 《深入 React 技术栈》
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CEF与代理
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • javascript面向对象之创建对象
  • javascript数组去重/查找/插入/删除
  • mysql常用命令汇总
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Twitter赢在开放,三年创造奇迹
  • 机器学习 vs. 深度学习
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 设计模式 开闭原则
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用Swoole加速Laravel(正式环境中)
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 容器镜像
  • # Panda3d 碰撞检测系统介绍
  • $().each和$.each的区别
  • (1)(1.11) SiK Radio v2(一)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)hibernate配置管理
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原)Matlab的svmtrain和svmclassify
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .naturalWidth 和naturalHeight属性,
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Core中Emit的使用
  • .net FrameWork简介,数组,枚举
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET开发不可不知、不可不用的辅助类(一)