linux文件权限chmod、chown、umask、setfacl、chattr

文件权限操作

    • 权限问题
    • chmod
    • SUID
    • SBIT
    • chgrp
    • chown
    • umask
    • ACL
    • chattr
    • lsattr

权限问题

rwx-rw-r  764    r--r--r 444  rw-------  600  rwxrwxrwx 777
	r  read 读取 4
	w  write 写入2
	x  execute 执行 1
	权限 9位 分为3组
	rwx rwx rwx 1
第一组 代表文件所有者具有的权限 owner
第二组 代表文件所有者 所在组的权限 group
第三组 代表其他用户的权限 others

chmod

chmod 变更文件或目录权限
	chmod 777 file.c         #对所有权限组添加权限
		等价:chmod a=rwx  file.c
	chmod ug=rwx,o=x file.c  #拥有者和群组读写执行权限,其他为执行
	chmod 771 file.c
			u   文件或目录的拥有者
			g   文件或目录的所属群组
			o   文件或目录的其它拥有者
			a   全部,含拥有者,群组,其它拥有者
	将文件设为所有人都可读取
	chmod ugo+r file.txt      #与下面表达式等价
	chmod a+r file.txt
	将file1.txt和file2.txt文件拥有者和所属群组可写入,其他人不可写
	chmod  ug+w,0-w  file1.txt  file2.txt
	参数:
		-R   recursive递归处理,指定目录下所有文件及子目录

SUID

SUID:继承二进制程序所有者权限(权限前加4)
	-rwsr-xr-x  #chmod 4755  filename   s权限添加到二进制程序文件,添加到目录无意义
	chmod 0755 file  删除文件s权限,无法删除目录的SUID
	----------. 1 root root     /etc/shadow  
	-rwsr-xr-x. 1 root root     /usr/bin/passwd
	具有S权限的passwd命令可以被普通用户执行继承passwd权限修改shadow
	SGID:继承二进制程序所有组的权限,作用于组时新建文件继承目录所属组
	-rwxr-sr-x  #chmod 2755  filename   s权限出现在所属组x位置上

SBIT

SBIT:(sticky bit)作用于目录,此目录文件只能被所有者删除
	rwxr-xr-t  #chmod 1755  filename  t权限出现在其他者的x权限上
	4  SUID =u+s
	2  GUID=g+s
	1  SBIT=o+t

chgrp

chgrp 更改所属组
	chgrp -R  weng  /home/text      #递归

chown

chown更改文档的所有者和所属组,使用权限为root,一般使用者没有权限
	格式:chown  [选项]  文档
	-c  作用与-v相似,只传回修改的部分
	-f  不显示错误信息
	-h  只对符号链接的文件做修改,不更改其他任何文件
	-R  递归处理,对子目录一并处理
	-v  显示指令执行过程
	
	chown -R  用户名称 文件或目录
	chown test:root test.txt   #将文件test.txt属主改为test,属组为root,之间用”:”或者”.”连接
	chown test.root test.txt  
	chown  .root test.txt  #只更改属组
	chown  root.  test.txt  #只更改属主

umask

创建目录或文件的默认权限,系统默认值可在/etc/profile文件中设置
	#umask   #查看权限掩码
	umask值   目录权限   文件权限
	022			755			644
	027			750			640
	002			775			664
	006			771			660
	007			770			660

	umask值为权限反码,7为权限数字,目录权限为755,对应umask值为022(7-7=0,7-5=2,7-5=2)
	umask值对应的文件权限为目录权限去掉执行权限

ACL

ACL权限,独立于u,g,o的rwx的权限之外的具体权限设置,可以针对单一用户,单一文件或目录来进行rwx权限控制,对于需要特殊权限的使用设置,如,某一个文件不让单一某个用户访问
	-rwxrwx---+   #+表示ACL权限
	
setfacl :设置acl权限命令
	-m  配置acl参数给文件或目录,不能与-x合用
	-x  删除acl参数,不能与-m合用
	-b --remove-all  删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留
	-k --remove-default  删除缺省的acl规则。如果没有缺省规则,将不提示
	-n --no-mask  不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定
	--mask  重新计算有效权限,即使ACL mask被明确指定
	-d --default  设定默认的acl规则
	--restore=file  从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行
	--test  测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出
	-R --recursive  递归的对所有文件及目录进行操作
	-L --logical  跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录
	-P --physical  跳过所有符号链接,包括符号链接文件
	--version  输出setfacl的版本号并退出
	--help  输出帮助信息
	--  标识命令行参数结束,其后的所有参数都将被认为是文件名
	-  如果文件名是-,则setfacl将从标准输入读取文件名
设置acl权限
	#setfacl  -m  u:test:rw-   file  给test用户向file文件增加读写acl规则
	指定用户和组删除ACL权限
		setfacl -x u: 用户名  文件名
		setfacl -x g: 组名  文件名
		setfacl -b  文件名   删除文件所有ACL权限
		getfacl   查看指定文件目录的ACL权限
			# file: note.txt
			# owner: root
			# group: root
			user::rw-
			group::r--
			other::r--

rwxrwxr–. 权限后面的点权限,关于selinux安全上下文,具体请查看selinux相关设置

chattr

chattr命令用来修改文件系统的权限属性,只有root用户可以使用,凌驾于rwx之上授权
	chattr [选项]  文件或目录名
	+    增加权限
	-    删除权限
	=    等于权限
	i    对文件设置i属性,不允许对文件删除、改名、添加和修改数据,对目录设置i属性,只能修改目录下文件的数据,不允许建立和删除文件
	a    对文件设置a属性,只能在文件中增加数据,但是不能删除和修改数据,对目录设置a属性,只允许在目录中建立和修改文件,不允许删除文件
	e    linux中大部分文件默认拥有e属性,表示文件使用ext文件系统进行存储,而且不		能使用chattr -e取消e属性
	
	chattr  +i  test.txt   #增加i属性,root不能强制删除

lsattr

lsattr显示文件系统属性
	lsattr [选项] 
		-a  显示所有文件和目录
		-d  目标为目录,仅列出目录本身属性,不列出文件属性

你可能感兴趣的:(linux)