Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl

文章目录

    • @[TOC]
    • 文件属性:
    • 修改文件的属性和属组:
    • 文件权限:
    • Linux系统上有三种特殊权限:
    • 访问控制列表:acl

文件属性:

Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第1张图片

修改文件的属性和属组:

修改文件的属主:chown
chown[OPTION]... [OWNER][:[GROUP]] FILE...
用法:
OWNER
OWNER:GROUP
:GROUP
命令中的冒号可用.替换
-R: 递归
chown[OPTION]... --reference=RFILE FILE...
修改文件的属组:chgrp
chgrp[OPTION]... GROUP FILE...
chgrp[OPTION]... --reference=RFILE FILE...
-R 递归

小案例:修改文件的属组

	chown  -c   OWNER:GROUP  filename
	chgrp  -c  GROUP  filename

Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第2张图片
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第3张图片

文件权限:

文件的权限主要针对三类对象进行定义:
	owner: 属主, u
	group: 属组, g
	other: 其他, o
每个文件针对每类访问者都定义了三种权限:
	r: Readable:可读
	w: Writable:可写
	x: eXcutable:可执行

当然,权限不止文件有,目录同样也有

文件:
	r: 可使用文件查看类工具获取其内容
	w: 可修改其内容
	x: 可以把此文件提请内核启动为一个进程
目录:
	r: 可以使用ls查看此目录中文件列表
	w: 可在此目录中创建文件,也可删除此目录中的文件
	x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
	X:只给目录x权限,不给文件x权限

权限与数字对应表:
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第4张图片

权限同数字对应:
	---		000  	0
	--x		001 	1
	-w-		010		2
	-wx		011 	3
	r--		100  	4
	r-x		101 	5
	rw-		110  	6
	rwx		111 	7
例如:
	640: rw-r-----
	755: rwxr-xr-x

修改权限使用的命令:chmod

chmod[OPTION]... OCTAL-MODE FILE...
	-R: 递归修改权限
chmod[OPTION]... MODE[,MODE]... FILE...
MODE:
修改一类用户的所有权限:
	u= g= o= ug= a= u=,g=
修改一类用户某位或某些位权限
	u+ u-g+ g-o+ o-a+ a-+ -

示例:

	chgrp sales testfile
	chown root:admins testfile
	chmod u+wx,g-r,o=rx file
	chmod -R g+rwX /testdir
	chmod 600 file
	chown mage testfile

案例:修改f5文件的权限
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第5张图片
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第6张图片

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...

给文件的权限进行限定之后会显示为S,如图所示
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第7张图片
目录上的sgid权限:

默认情况下,用户创建文件时,其属组为此用户所属的主组
一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
通常用于创建一个协作目录
权限设定:
	chmod g+s DIR...
	chmod g-s DIR...

Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第8张图片
sticky权限:

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
sticky 设置在文件上无意义
权限设定:
	chmod o+t DIR...
	chmod o-t DIR...
例如:
ls-ld/tmp
	drwxrwxrwt 12 root root 4096 Nov 2 15:44 /tmp

需要特别注意的一点是这里加上设定之后显示的为T,而不是S
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第9张图片
特殊权限数字法:

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权限

设定文件特定属性:

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

在这里插入图片描述
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第10张图片

访问控制列表: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生效顺序:所有者,自定义用户,自定义组,其他人
为多用户或者组的文件和目录赋予访问权限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

小示例:给dir目录添加组权限rwx
在这里插入图片描述

ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限),而非传统的组权限
	getfacl可看到特殊权限:flags
	通过ACL赋予目录默认x权限,目录内文件也不会继承x权限
	base ACL 不能删除
	setfacl -k dir 删除默认ACL权限
	setfacl –b file1清除所有ACL权限
	getfaclfile1 | setfacl--set-file=-file2 复制file1的acl权限给file2

备份和恢复ACL:

备份和恢复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

备份acl:getfacl -R dir > acl.txt
Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第11张图片
删除acl以及恢复:

	setfacl -R -b dir/
	setfacl --restore acl.txt

Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl_第12张图片

你可能感兴趣的:(Linux系统上的文件权限——chmod、chgrp、setfacl、getfacl)