linux权限管理
权限管理
文件的权限针对三类对象进行定义:
- owner属主,缩写u
 - group属组,缩写g
 - other其他,缩写o
 
1、文件的一般权限

(1)r,w,x的作用及含义:
| 权限 | 对文件影响 | 对目录影响 | 
| r(read:读) | 可以读取文件内容 |   可以列出目录的内容,即目录下的文件的文件名   | 
|   w(write:写)   |   可以更改文  件的内容   |   可以创建或者删除目录中的任一文件(只有w权限无法创建删除文件,需要和x权限一起使用)   | 
|   x(execute:执行)    | 可作为可执行文件 |   可以切换到目录   | 
| - | 无 | 没有权限 | 
PS:root账户不受文件权限的读写限制,执行权限受限制
(2)相应二进制可表示对应权限:
|   所属者/所属组/其他用户权限的字符表示   |   二进制表示    |   八进制表示    | 
| --- | 000 | 0 | 
| --x | 001 | 1 | 
| -w- | 010 | 2 | 
| -wx | 011 | 3 | 
| r-- | 100 | 4 | 
| r-x | 101 | 5 | 
| rw- | 110 | 6 | 
| rwx | 111 | 7 | 
如图:

(3)常见普通权限组合
- 目录:r-x;rwx;---
 - 文件(文本文件):r-x;rw-;rwx;r--;---
 
2、修改权限
(1)修改文件或目录的权限 --- chmod
- 格式1:chmod [选项] [ugoa][+-=][rwx] 文件或目录..
 - 格式2:chmod [选项] nnn 文件或目录...
 - 常用选项:
 
|   u g o a    |   权限设置所针对的用户类别。   u(user)表示文件或目录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即u+g+o)   | 
|   + 或 - 或 =   |   设置权限的操作动作,+代表添加某个权限;-代表取消某个权限;=表示只赋予给定的权限,并取消原有的权限   | 
|   rwx   |   用字符形式表示的所设置的权限,可以是其中一个字母或组合   | 
|   nnn   |   用三位八进制数字表示的权限   | 
例1:修改文件a1的权限
[root@tianqinwei test]# ll --- 查看文件权限
total 0
-rw-r--r--. 1 root root 0 Mar  6 17:45 a1
[root@tianqinwei test]# chmod o-r a1 --- 对其他用户去掉可读权限
[root@tianqinwei test]# ll a1 
-rw-r-----. 1 root root 0 Mar  6 17:45 a1
[root@tianqinwei test]# chmod g=--- a1 --- 将所属组权限改为---
[root@tianqinwei test]# ll a1
-rw-------. 1 root root 0 Mar  6 17:45 a1
[root@tianqinwei test]# chmod 640 a1 --- 用数字来修改权限,参考上方二进制转为八进制
[root@tianqinwei test]# ll a1
-rw-r-----. 1 root root 0 Mar  6 17:45 a1
[student@tianqinwei test]$ cat a1 --- 验证,普通用户对a1没有权限
cat: a1: Permission denied
[root@tianqinwei ~]# ll -d /root/
drwxrwxrwx. 16 root root 4096 Mar  6 18:18 /root/
[root@tianqinwei test]# chmod a-w /root/ --- 将/root/用户,所属组,其他用户的写权限全都修改
[root@tianqinwei test]# ll -d /root/
dr-xr-xr-x. 16 root root 4096 Mar  6 18:18 /root/ 
例2:将文件a2改为所属组和其他用户可读可写
[root@tianqinwei test]# chmod g=rw-,o=rw- a2 --- 中间部分命令用逗号隔开(系统会把o部分认为是文件名称,所以用空格分隔会报错)
[root@tianqinwei test]# ll a2
-rw-rw-rw-. 1 root root 0 Mar  6 17:45 a2
[student@tianqinwei test]$ cat a2 --- 验证,可对文件进行可读操作
azsdfgarhae5rhjndtgnsrt6jnjmrfsngxer5dyhusrtn 
(2)修改文件或目录的属主和属组
<1> chown:可同时修改属主和属组
- 格式:chown [选项] 新属主[:[新属组]] 文件或目录…
 
例:修改文件a2所属主,所属组
[root@tianqinwei test]# ll a2
-rw-rw-rw-. 1 root root  46 Mar  6 18:05 a2
[root@tianqinwei test]# chown student a2 --- 修改所属主
[root@tianqinwei test]# ll a2
-rw-rw-rw-. 1 student root 46 Mar  6 18:05 a2
[root@tianqinwei test]# chown :student a2 --- 修改所属组
[root@tianqinwei test]# ll a2
-rw-rw-rw-. 1 student student 46 Mar  6 18:05 a2
[root@tianqinwei test]# chown root:root a2 --- 同时修改所属主和所属组
[root@tianqinwei test]# ll a2
-rw-rw-rw-. 1 root root 46 Mar  6 18:05 a2 
<2> chgrp:只能修改文件的所属组
- 格式:chgrp [选项] [新属组] 文件或目录...
 
例:修改文件a3所属组
[root@tianqinwei test]# ll a3
-rw-r--r--. 1 root root 39 Mar  6 18:05 a3
[root@tianqinwei test]# chgrp student a3
[root@tianqinwei test]# ll a3
-rw-r--r--. 1 root student 39 Mar  6 18:05 a3 
(3)例:student用户可读可写a3,其他用户都不可进行操作
[root@tianqinwei test]# ll a3 --- 查看a3文件的权限以及所属主和组
-rw-r--r--. 1 root student 39 Mar  6 18:05 a3
[root@tianqinwei test]# chmod 600 a3 --- 将文件所属组和其他用户的所有权限取消
[root@tianqinwei test]# ll a3
-rw-------. 1 root student 39 Mar  6 18:05 a3
[root@tianqinwei test]# chown student:root a3 --- 将文件的所属主改为student,所属组改为root
[root@tianqinwei test]# ll a3 
-rw-------. 1 student root 39 Mar  6 18:05 a3
则此时文件仅可由student用户进行读写 
3、文件的特殊权限
(1)SUID(u+s)权限
<1> 含义:为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时获得该程序文件所属者的权限
如:
[root@tianqinwei test]# ll /usr/bin/passwd 
--- 当用户使用passwd命令的时候,短暂拥有该命令所有者root的权限,
所以此时普通用户就可在shadow上进行操作修改,且只能在二进制执行文件上使用
-rwsr-xr-x. 1 root root 34512 Aug 13  2018 /usr/bin/passwd
[root@tianqinwei test]# ll /etc/shadow
----------. 1 root root 1309 Oct 21 08:51 /etc/shadow 
student 用户在执行 passwd 修改自己的密码时, 其修改的密码, 最终是需要保存到 /etc/shadow 这个文件中,而这个文件的权限是 --------- ,它的拥有者是 root ,也只有root 可以“ 强制” 存储, 其他用户连看都不行。可student 去执行 passwd (/usr/bin/passwd) ,却可以更新自己的密码
<2> 例:将文件a1和a2得到权限修改为SUID(u+s)
[root@tianqinwei test]# ll
total 12
-rwxrwxrwx. 1 root    root 241 Mar  6 18:05 a1
-rw-rw-rw-. 1 root    root  46 Mar  6 18:05 a2
[root@tianqinwei test]# chmod u+s a1 --- 将用户权限修改为u+s
[root@tianqinwei test]# chmod u+s a2 
[root@tianqinwei test]# ll
total 12
-rwsrwxrwx. 1 root    root 241 Mar  6 18:05 a1 --- 若该文件是可执行文件,显示为s
-rwSrw-rw-. 1 root    root  46 Mar  6 18:05 a2 --- 若改文件是不可执行文件,显示为S 
有 s 权限的存在,当 s权限在拥有者的权限位上时, 即如 -rwsr-xr-x 这样时, 称为SUID 。SUID 即 Set UID , UID 指的是拥有者的的 ID, 而这个程序 (/usr/bin/passwd) 的拥有者为(root)
PS:
- SUID仅对二进制文件有效
 - 执行过程中,调用者暂时获得该文件所有者权限
 - 该权限只在执行过程中有效
 
(2)SGID(g+s)权限
<1> 作用:
- 文件:如果 SGID 设置在二进制文件上,则不论用户是谁,在执行该程序时,程序所属组将会变成该程序文件的所属组
 - 目录:若SGID设置在A目录上,则A目录内所建立的文件和目录的所属组,将会是A目录的所属组
 
<2> 例:将用户haha放入student组中,在该组中将权限更改为SGID,使得haha用户也可创建或删除文件
[root@tianqinwei test]# useradd haha --- 添加用户haha
[root@tianqinwei test]# gpasswd -a haha student --- 添加用户haha到student组中
Adding user haha to group student
[root@tianqinwei test]# tail -2 /etc/group
student:x:1000:haha
haha:x:1001:
[root@tianqinwei test]# ll -d /test
drwxr-xr-x. 2 root root 36 Mar  6 18:05 /test
[root@tianqinwei test]# chown :student /test --- 将目录/test所属组改为student
[root@tianqinwei test]# ll -d /test
drwxr-xr-x. 2 root student 36 Mar  6 18:05 /test
[root@tianqinwei test]# chmod g+s /test --- (g+s的效果:只要在所属组中的用户,都可在该目录下创建或删除文件,操作的文件都在student这个组中)
[root@tianqinwei test]# chmod g+w /test --- 给所属组添加可写权限
[root@tianqinwei test]# ll -d /test
drwxrwsr-x. 2 root student 36 Mar  6 18:05 /test
验证:
[student@tianqinwei test]$ touch ss
[haha@tianqinwei test]$ touch dd
[root@tianqinwei test]# ll
-rw-rw-r--. 1 haha    student   0 Mar  6 20:07 dd --- haha用户创建出的文件所属主为haha,所属组为student
-rw-rw-r--. 1 student student   0 Mar  6 20:07 ss --- student用户创建出的文件所属主为student,所属组为student 
(3)Sticky Bit--SBit(o+t):只针对目录有效, 对文件没有效果
<1> 含义:具有 SBit 的目录下, 用户若在该目录下具有 w 及 x 权限 , 则当用户在该目录下建立文件或目录时, 只有文件拥有者与 root 才有权力删除
<2> 例:将目录 /test 其他用户的权限更改为SBit
[root@tianqinwei test]# ll -d /test
drwxrwsrwx. 2 root student 56 Mar  6 20:07 /test
[root@tianqinwei test]# chmod o+t /test
[root@tianqinwei test]# ll -d /test
drwxrwsrwt. 2 root student 56 Mar  6 20:07 /test --- o用户在该目录下只可针对自己创建的文件进行“删除/重命名/移动”操作
 

4、ACL权限
(1)含义:若想指定一个用户想访问一个组中的文件,而该组中无此用户,则可用ACL权限指定该用户,赋予其相应权限。
(2)命令:
<1> 查看权限:getfacl [文件名]
<2> 设定权限:setfacl 选项 文件名
- 常用选项
 
|   -m   |   设定 ACL 权限。如果是给予用户 ACL 权限,则使用 (u:用户名:权限 )格式赋予;如果是给予组 ACL 权限,则使用( g:组名:权限) 格式赋予   | 
|   -x   | 删除指定的ACL权限 | 
| -b | 删除所有的ACL权限 | 
| -d | 设定默认ACL权限。只对目录生效,目录中新建立的文件有此默认权限 | 
| -k | 删除默认ACL权限 | 
| -R | 递归设定ACL权限。指设定的ACL权限会对子目录下所有文件生效 | 
例:文件权限为rwx rw- ---,文件所属主为wu,文件所属组为csa。若让组外用户xixi对此目录中文件可读可写,且不让其他用户拥有权限,命令为:setfacl -m u:xixi:rw- cs
5、umask(权限掩码)
(1)作用:设置新建文件或目录的默认权限
(2)默认umask:
在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默认权限与umask值有关,其具体关系是:
- 新建文件的默认权限=0666-umask值
 - 新建目录的默认权限=0777-umask值
 
[root@tianqinwei test]# umask --- 查看默认umask值
0022
 
(3)例:umask默认值为033,则对应的文件和目录的默认权限是什么?

则文件对应默认权限是644;目录对应默认权限为744
相关文章:
linux权限管理
权限管理 文件的权限针对三类对象进行定义: owner属主,缩写ugroup属组,缩写gother其他,缩写o 1、文件的一般权限 (1)r,w,x的作用及含义: 权限对文件影响对目录影响r(read…...
提高生活质量,增加学生对校园服务的需求,你知道有哪些?
随着电子商务平台利用移动互联网的趋势提高服务质量,越来越多的传统企业开始关注年轻大学生消费者的校园市场。 提高生活质量,增加学生对校园服务的需求 大学生越来越沉迷于用手机解决生活中的“吃、喝、玩、乐”等服务,如“吃、喝”——可…...
Antlr4:使用grun命令,触发NoClassDefFoundError
1. 意外的发现 在学习使用grun命令时,从未遇到过错误 最近使用grun命令,却遇到了NoClassDefFoundError的错误,使得grun测试工具无法成功启动 错误复现: 使用antlr4命令编译Hello.g4文件,并为指定package(…...
基于rootfs构建Docker镜像
1. 背景 在实际工作中,由于系统本身版本过低,在接受新项目时出现系统版本过低而无法开始工作的问题。 为了解决该问题,使用Docker构建基于ubuntu-18.04的Docker镜像,以解决版本兼容问题。 2. 构建rootfs 2.1. 下载ubuntu-18.0…...
电脑文件软件搬家迁移十大工具
10 大适用于 Windows 的数据迁移软件。 数据迁移至关重要,几乎所有组织都依赖于此。如果您认为数据传输不是一件容易的事,那么数据迁移软件可以帮上忙。 1、奇客电脑迁移 将现有操作系统、软件、文件迁移到 新电脑的最佳方法之一是使用名为奇客电脑迁移…...
【数据库】排名问题
返回第N高的一个解决思路返回N组中的第N高解决思路分数排名解决思路窗口函数数据库经常被用来解决排名问题。 返回第N高的一个 单表查询: 表: Employee------------------- | Column Name | Type | ------------------- | id | int | | salary | int | ----…...
【redis学习篇】主从哨兵集群架构详解
一、Redis主从架构 1.1 redis主从架构搭建 1、复制一份redis.conf文件 2、将相关配置修改为如下值: port 6380 pidfile /var/run/redis_6380.pid # 把pid进程号写入pidfile配置的文件 logfile "6380.log" dir /usr/local/redis-5.0.3/data/6380 # 指…...
基于jdk8的HashMap源码解析
hashMap常见面试题总览 为什么重写Equals还要重写HashCode方法?HashMap如何避免内存泄漏问题?HashMap1.7底层是如何实现的?HashMapKey为null存放在什么位置?HashMap如何解决Hash冲突问题?HashMap底层采用单链表还是双…...
深度学习J1周-ResNet50算法实战与解析_鸟类识别(CNN)
🍨 本文为[🔗365天深度学习训练营]内部限免文章(版权归 *K同学啊* 所有) 🍖 作者:[K同学啊] 本周任务: ●1.请根据本文 TensorFlow 代码(训练营内部阅读),编写…...
SpringBoot中一行代码解决字符串向枚举类型转换的问题
1. 场景 在WEB开发,客户端和服务端传输的数据中经常包含一些这样的字段:字段的值只包括几个固定的字符串。 这样的字段意味着我们需要在数据传输对象(Data Transfer Object, DTO)中对该字段进行校验以避免客户端传输的非法数据持…...
Praat之基频分析
Praat之基频分析 测量基频F0的方法 自相关 Autocorrelation(易出现pitch-halving\pitch-double)窄带谱图 Narrowband spectrogram(第一谐波就是基频)倒谱分析 Cepstral analysis测量声门波 glottal pluse(通过波形&a…...
乡村企业门户网站
技术:Java、JSP等摘要:随着时代的发展,电脑与Internet已经进入我们的生活。信息时代的来临,知识经济的扩张,网站已越来越靠近我们的生活。据CNNIC报告显示,中国上网用户有6800万。通过Internet来经营运作一…...
Deploy Workshop|DIY部署环境,让OceanBase跑起来
2023 年 3 月 25 日,我们将在北京开启首次 OceanBase 开发者大会,与开发者共同探讨单机分布式、云原生、HTAP 等数据库前沿趋势,分享全新的产品 Roadmap,交流场景探索和最佳实践,此外,OceanBase 开源技术全…...
【CPP】定义一个类
一:当实现一个类的时候,编译器都做了什么 前言:当我们实现一个类的时候,编译器为我们做了什么;在对类进行操作的时候,有哪些特殊的成员函数可以帮助我们更好的操纵类; class A {A();//默认构造…...
谷歌广告投放步骤流程是什么?一文带你全方位了解实操细节
谷歌,大家都不陌生吧,一个人们很常用的搜索引擎。而谷歌还可以打广告,即谷歌广告,那这跟跨境电商有什么关心呢?东哥告诉大家,关系大了去了,毕竟如果用户搜索与我们相关的关键词,就有…...
TypeScript 怎么去查找类型定义的?
TypeScript 怎么去查找类型定义的?类型文件分类第三方库的类型自定义类型结论类型文件分类 我们项目中的类型文件分为两种:一类是第三方库的类型,一类是在项目中的自定义类型。 第三方库的类型 (1)Jquery࿱…...
NPM包管理器
文章目录一、NPM包管理器1、简介2、安装NPM3、使用npm管理项目3.1项目初始化3.2修改npm镜像3.3 npm install命令的使用3.4其它命令一、NPM包管理器 1、简介 什么是NPM NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统&…...
IT英语记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1、Classification2、Logistic Regression3、网络相关3.1 WAN(Wide Area Network)、LAN(Local Area Network)网络…...
SRS4.0 源码分析- RTC模块相关类
前言 本文介绍SRS4.0涉及RTC模块的C类,主要包括RTC Server和Session相关的。 SrsGoApiRtcPlay 处理webrtc client的播放请求,解析client的offer,并且生成server的answer,并且为这次请求创建一个session。SrsRtcServer 监听udp端…...
数位DP
数位dp的题目一般会问,某个区间内,满足某种性质的数的个数。 利用前缀和,比如求区间[l,r]中的个数,转化成求[0,r]的个数 [0,l-1]的个数。利用树的结构来考虑(按位分类讨论) 1081. 度的数量 #include<…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
ui框架-文件列表展示
ui框架-文件列表展示 介绍 UI框架的文件列表展示组件,可以展示文件夹,支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项,适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...
