三、Linux入门之文件权限

本文介绍了Linux文件系统的文件属性,重点讲解了文件权限及其操作,包括读、写、执行权限的设置,并探讨了特殊权限和访问控制列表ACL的概念,提供了实践练习,帮助初学者掌握Linux运维中的文件权限管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件属性

在这里插入图片描述

文件权限属性

主要针对三类对象进行定义:
	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 显示特定属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值