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

三、Linux入门之文件权限

文件属性

在这里插入图片描述

文件权限属性

主要针对三类对象进行定义:
	owner 属主, u
	group 属组, g
	other  其他, o 
每个文件针对每类访问者都定义了三种权限
	r  Readable,可读
	w  Writable,可写
	x  eXcutable,可执行
文件与文件夹中权限功能不相同:
	文件:	r 	可使用文件查看类工具获取其内容
			w	可修改其内容
			X	可以把此文件提请内核启动为一个进程
	目录:	r	可以使用ls查看此目录中文件列表
			w	可在此目录中创建文件,也可删除此目录中的文件
			X	可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
			X	只给目录x权限,不给文件x权限
	文件权限可以使用八进制数字表示
		--- 000		没有任何权限
		--x 001		有执行权限,1\
		-w- 010		有写权限,2
		-wx 011		有写、执行权限,3
		r-- 100 		有读权限,4
		r-x 101		有读、执行权限,5
		rw- 110		有读、写权限,6
		rwx 111		有读、写、执行权限,7	
	权限项 	 文件类型		读	写	执行		读	写	执行		读 	写	执行
	字符表示 (d;l;c;s;p) 	r	w	 x		r	w	 x		r	w	 x
	数字表示					4	2	 1		4	2	 4		4	2	 1
	权限分配 				文件所有者		文件所属组用户	  其他用户
	例如: 
		640  rw-r----- 所有者有读、写仅限,所属组有读权限,其他用户没有权限
		755  rwxr-xr-x 所有者读、写、执行,所属组有读、执行权限,其他用户有读、执行权限权限

权限属性操作

chown:修改文件的所有者,所属组
	chown [OPTION]... [OWNER][:[GROUP]] FILE...
				OWNER:用户名
				:GROUP,冒号也可用 . 替换,用户组
				-R: 递归 
	chown [OPTION]... --reference=RFILE FILE...
	示例:
		chown test file.txt			修改文件所有者
		chown :webs file.txt		修改文件所属组
		chown .webs file.txt 		修改文件所属组
		chown test:webs file.txt		修改所有者和所属组
		chown -R test testdir		递归修改文件夹本身及其目录下的所有文件及目录的所有者
	
chgrp:设置文件的属组信息
	chgrp [OPTION]... GROUP FILE... 
	chgrp [OPTION]... --reference=RFILE FILE... 
	-R 递归 

文件权限操作命令:chmod(rwx|X)
	chmod [OPTION]... OCTAL-MODE FILE...
	-R: 递归修改权限
	chmod [OPTION]... MODE[,MODE]... FILE...
		MODE:修改一类用户的所有权限
			u=  g= o= ug=  a=,u=,g=
			如:chmod u=rwx,g=rx,o=x file.sh

修改一类用户某位或某些位权限
	u+  u- g+ g- o+ o- a+ a- + - 
		如:chmod u+x,g-w,o-x file.sh
	chmod [OPTION]... --reference=RFILE FILE... 
	考RFILE文件的权限,将FILE的修改为同RFILE
	示例:
		chown root:admins testfile
		chmod u+wx,g-r,o=rx file
		chmod -R g+rwX /testdir
		chmod 600 file
		chown mage testfile
新建文件和目录的默认权限
	umask值 可以用来保留在创建文件权限
	新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1
	新建目录的默认权限: 777-umask
	非特权用户umask是 002
		root的umask 是 022
		umask: 查看
	umask #  设定
	    示例:	umask 002
	    umask u=rw,g=r,o=
	umask –S 模式方式显示
	umask –p 输出可被调用
	全局设置: /etc/bashrc 用户设置:~/.bashrc

练习

1、当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
	答:执行权限为目录的基础权限,没有执行权限则无法进入到目录,无法查看目录内容,无法在目录中创建、修改、删除里面的文件,就是什么也做不了
2、当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
	答:无法查看目录中的文件列表
3、当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
	答:修改文件内容需要对文件有写权限才可以,而删除文件则需要对文件父目录有写权限才可以,所以redis对文件file1不可修改也不可删除
4、当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修改和删除?
	答:对目录有写、执行权限,则可以进入到目录,可以在目录中创建、删除文件,因此zabbix可以删除file1文件,修改文件需要文件本身有写权限方可,所以zabbix不能修改file1文件
5、复制/etc/fstab文件到/var/tmp下,设置文件所有者为tomcat读写权限,所属组为apps组有读写权限,其他人无权限
	答:		chown tomcat:apps /var/tmp/fstab
			chmod g=rw,o= /var/tmp/fstab
6、误删除了用户git的家目录,请重建并恢复该用户家目录及相应的权限属性 
	答:		cp /etc/skel/. /home/git		注:复制时必须留意隐藏与非隐藏文件,用这个命令可以把隐藏的及非隐藏的全复制过去
				chown -R git:git git			修改所有者及所属组

Linux文件系统上的特殊权限

SUID, SGID, Sticky
三种常用权限:r, w, x    user, group, other
安全上下文
前提:进程有属主和属组;文件有属主和属组 
	(1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
	(2) 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
	(3) 进程访问文件时的权限,取决于进程的发起者
	(a) 进程的发起者,同文件的属主:则应用文件属主权限
	(b) 进程的发起者,属于文件属组;则应用文件属组权限
	(c) 应用文件“其它”权限
SUID权限:只对在二进制可执行文件有效
	任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
	启动为进程之后,其进程的属主为原程序文件的属主
	SUID只对二进制可执行程序有效
	SUID设置在目录上无意义
	权限设定:	chmod u+s FILE...
		chmod u-s FILE...
		 
SGID权限:可应用于文件,也可应用于目录
	作用于文件上的SGID权限
		任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
		启动为进程之后,其进程的属组为原程序文件的属组 
		权限设定: 	chmod g+s FILE...
			chmod g-s FILE... 
	作用于目录上的SGID权限
		默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则用户在此目录中所创建的文件及目录的所属组将继承此目录的所属组
		通常用于创建一个协作目录
		权限设定: 	chmod g+s DIR...
			chmod g-s DIR...

sticky 位
	具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
	在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
	sticky 设置在文件上无意义
	权限设定: 	chmod o+t DIR...
		chmod o-t DIR...
	查看Sticky 位,如下,权限最后一位t表示Sticky 位
		ls -ld /tmp
		drwxrwxrwt  12 root  root  4096 Nov 2 15:44 /tmp 
SUID, SGID, Sticky特殊权限数字表示法
	SUID SGID STICKY
		000 0
		001:1
		010:2
		011:3
		100:4
		101:5
		110:6
		111:7
	示例:	chmod 4777 /tmp/a.txt  

权限位映射
	SUID: user,占据属主的执行权限位
		s:属主拥有x权限
		S:属主没有x权限
	SGID: group,占据属组的执行权限位
		s: group拥有x权限
		S:group没有x权限
	Sticky: other,占据other的执行权限位
		t:other拥有x权限
		T:other没有x权限

访问控制列表ACL

ACL:Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
	tune2fs –o acl /dev/sdb1
	mount –o acl /dev/sdb1  /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人
ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
base ACL 不能删除
mask设置最大权限,只影响除所有者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
用户或组的设置必须存在于mask权限设定范围内才会生效
	setfacl  -m mask::rx  file
	--set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
	如:setfacl --set u::rw,u:wang:rw,g::r,o::- file1

ACL操作命令:
	getfacl  查看特殊权限:flags 
	setfacl	设置权限
	为多用户或者组的文件和目录赋予访问权限rwx
		mount -o acl /directory
		getfacl file |directory
		setfacl -m u:wang:rwx file|directory
		setfacl -Rm g:sales:rwX directory
		setfacl –M file.acl file|directory
		setfacl -m g:salesgroup:rw file| directory
		setfacl -m d:u:wang:rx directory
		setfacl -x u:wang file |directory
		setfacl -X file.acl directory
		setfacl  -k  dir 删除默认ACL权限
		setfacl –b  file1清除所有ACL权限
		getfacl  file1 | setfacl --set-file=-   file2  复制file1的acl权限给file2
备份和恢复ACL
	主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
		getfacl -R /tmp/dir1 > acl.txt
		setfacl -R -b /tmp/dir1
		setfacl -R --set-file=acl.txt /tmp/dir1
		setfacl --restore acl.txt
		getfacl -R /tmp/dir1
练习
	1、在/testdir/dir里创建的新文件自动属于webs组,组apps的成员如:tomcat能对这些新文件有读写权限,组dbs的成员如:mysql只能对新文件有读权限,其它用户(不属于webs,apps,dbs)不能访问这个文件夹
		答:		chmod g+s /testdir/dir
				setfacl -m g:tomcat:rw /testdir/dir
				setfacl -m g:dbs:0 /testdir/dir
				setfacl -x u:mysql:r /testdir/dir
	2、备份/testdir/dir里所有文件的ACL权限到/root/acl.txt中,清除/testdir/dir中所有ACL权限,最后还原ACL权限
		答:	getfacl -R /testdir/dir > /root/acl.txt		备份
			setfacl –R –b /testdir/dir					清除ACL权限
			setfacl –restore acl.txt					还原

设定文件特定属性

chattr +i 不能删除,改名,更改
chattr +a 只能追加内容
lsattr 显示特定属性

相关文章:

  • 二、Linux入门之VIM编辑器
  • 四、Linux入门之文件查看命令
  • 4、Linux入门之文本处理小练习
  • 五、Linux入门之文件查找与打包解压缩
  • Linux入门之文本处理三剑客grep、sed、akw
  • 5、Linux入门之小练习
  • Linux入门之正则表达式
  • 七、Linux入门之软件包管理
  • 七、Linux入门之磁盘存储和文件系统
  • 7、Linux入门之小练习
  • 十、Linux入门之Shell进阶
  • tekla钢结构算量_【BIM应用案例】钢结构第一楼:天津117大厦!
  • matlab 加入高频噪声_电路中共模噪声的产生和抑制机理
  • 类图中表达总体与局部的关系_游戏中的亲密关系表达
  • ppt流程图字体太小_PPT字体使用攻略,看这一篇文章就够了!
  • JavaScript 如何正确处理 Unicode 编码问题!
  • [译]前端离线指南(上)
  • 【Leetcode】104. 二叉树的最大深度
  • Angular数据绑定机制
  • Brief introduction of how to 'Call, Apply and Bind'
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • KMP算法及优化
  • mysql innodb 索引使用指南
  • vue中实现单选
  • 基于 Babel 的 npm 包最小化设置
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 通过git安装npm私有模块
  • 栈实现走出迷宫(C++)
  • 如何在招聘中考核.NET架构师
  • ​人工智能书单(数学基础篇)
  • #QT项目实战(天气预报)
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (2)nginx 安装、启停
  • (4) PIVOT 和 UPIVOT 的使用
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (分布式缓存)Redis哨兵
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (新)网络工程师考点串讲与真题详解
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NetCore部署微服务(二)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • /etc/fstab 只读无法修改的解决办法
  • @vue/cli 3.x+引入jQuery
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [2016.7.Test1] T1 三进制异或
  • [AR Foundation] 人脸检测的流程
  • [ERROR] ocp-server-ce-py_script_start_check-4.2.1 RuntimeError: ‘tenant_name‘
  • [Excel]如何找到非固定空白格數列的條件數據? 以月份報價表單為例
  • [GN] Vue3.2 快速上手 ---- 核心语法2