Linux--文件权限

2024-01-09 10:22:03

基本权限

基本权限类型:可读(r)、可写(w)、可执行(x)

权限对象:

  • 属主:u
  • 属组:g
  • 其他人:o

权限指的是属主、属组或其他人对文件可操作的类型

权限管理

更改文件的属主、属组

  • chown 命令
    既可以更改属主,也可以更改属组
chown 属主:属组 文件名
chown centos:hr file1 # 改属主、属组
chown centos file1 # 只改属主
chown :hr file1 # 只改属组
  • chgrp 更改文件的属组
[root@wdy ~]# chgrp it file1 # 改文件属组 
[root@wdy ~]# chgrp -R it dir1 # 改文件属组

改变某个文件的访问模式

  • 更改文件权限
    • 使用符号更改
		对象		赋值符		权限类型(数字表示)
		u			+			r(4)
		g			-			w(2)	
chmod  	o			=			x(1)		file
		a

[root@wdy ~]# chmod u+x file1 		# 属主增加对file1文件的执行 权限
[root@wdy ~]# chmod a=rwx file1 	# 所有人对file1的权限为:读写执行 
[root@wdy ~]# chmod a=- file1 		# 所有人对file1没有权限 
[root@wdy ~]# chmod ug=rw,o=r file1 # 属主属组对file1的权限等于读写,其他人对file1的权限为只读
  • 使用数字更改
[root@wdy ~]# chmod 644 file1 
[root@wdy ~]# ll file1
  • r、w、x权限对文件和目录的意义

    • 当一个文件拥有x权限代表什么意思
      • 文件为普通文件时,代表可以执行
      • 文件为目录时,代表可以cd进入此目录
    • 当一个文件拥有w权限代表什么意思
      • 文件为普通文件时,代表可以更改文件的内容
      • 文件为目录时,代表可以创建或删除目录中的任一文件,可以用touch、rm命令
    • 当一个文件拥有r权限代表什么意思
      • 文件为普通文件时,代表可以读取文件的内容
      • 文件为目录时,代表可以列出目录的内容,可以使用ls命令
[root@wdy ~]# mkdir /dir10 
[root@wdy ~]# touch /dir10/file1 
[root@wdy ~]# chmod 777 /dir10/file1 
[root@wdy ~]# ll -d /dir10/ 
drwxr-xr-x. 2 root root 19 94 11:44 /dir10/ 
[root@wdy ~]# ll /dir10/file1 
-rwxrwxrwx. 1 root root 0 94 11:44 /dir10/file1 
[root@wdy ~]# su centos 
[centos@wdy root]$ cat /dir10/file1 
[centos@wdy root]$ rm -rf /dir10/file1 
rm: 无法删除"/dir10/file1": 权限不够

删除文件看的是用户是否拥有该目录的w权限,而不是对文件是否有w权限

对目录有w权限

[root@wdy ~]# chmod 777 /dir10/ 
[root@wdy ~]# chmod 000 /dir10/file1 
[root@wdy ~]# ll -d /dir10/ 
drwxrwxrwx. 2 root root 19 94 11:44 /dir10/ 
[root@wdy ~]# ll /dir10/file1 
----------. 1 root root 0 94 11:44 /dir10/file1 
[root@wdy ~]# su centos 
[centos@wdy root]$ cat /dir10/file1 
cat: /dir10/file1: 权限不够 
[centos@wdy root]$ rm -rf /dir10/file1

对目录有w权限,可以在目录中创建新文件,可以删除文件夹中的文件(跟文件权限无关)

ACL设置基本权限

acl(访问控制列表)

UGO设置基本权限:只能一个用户,一个组和其他人,粒度比较大

ACL设置基本权限:r、w、x

acl能够更精确的控制权限,可以单独针对某一个用户对某个文件的权限操作进行更改

ACL基本用法

  • getfacl 命令,查看acl权限列表
getfacl [选项] file

选项:
	-a:仅显示文件访问控制列表
	-d:仅显示默认的访问控制列表
	-c:不显示注释表头
	-e:显示所有的有效权限
	-E:显示无效权限
	-R:递归显示子目录
	-t:使用制表符分隔的输出格式
	
实例:
	查看acl权限列表
	getfacl anaconda-ks.cfg
	不显示表头
	getfacl -c anaconda-ks.cfg
  • setfacl命令,设置用户的基本权限
setfacl
常用选项
	-m :添加acl设定参数 
	-x :删除acl设定参数 
	-b :移除所有的ACL设定参数 
	-R :递归添加acl设定参数 
	-d :添加默认acl设定参数(目录)
指定某一用户增强权限:setfacl -m u:user01:rx /workdir
删除用户权限:setfacl -x u:username filename			
删除组权限:setfacl -x g:groupname filename 
删除整个acl权限:setfacl -b filename

实例:
通过将组设置成某个文件的访问权限,将用户添加到该组下,实现用户可以对文件实现想要的权限
useradd wdy
mkdir /workedir
groupadd worker2
setfacl -m g:worker2:rwx /workedir
usermod -a -G worker2 wdy
getfacl /workdir
su - wdy #当前用户wdy就能实现对/workedir进行rwx权限操作

让目录下创建的文件默认继承目录的ACL权限
setfacl -m d:u:wdy:rw /workdir  #d表示default,
cd /workdir
touch newfile	
getfacl newfile

设置

[root@xwz ~]# ll file1 
-rw-r--r--. 1 centos it 0 94 11:03 file1 
[root@xwz ~]# getfacl file1 
# file: file1 
# owner: centos 
# group: it 
user::rw- 
group::r-- 
other::r-- 
[root@xwz ~]# setfacl -m u:centos:rw file1 		# 增加用户权限 
[root@xwz ~]# setfacl -m u:user05:- file1 		# 增加用户权限 
[root@xwz ~]# setfacl -m o::rw file1 			# 修改其他人权限

查看/删除

[root@xwz ~]# ll file1
-rw-rw-rw-+ 1 centos it 0 94 11:03 file1
[root@xwz ~]# getfacl file1 
# file: file1 
# owner: centos 
# group: it 
user::rw- 
user:centos:rw- 
user:user05:--- 
group::r-- 
mask::rw- 
other::rw-

[root@xwz ~]# setfacl -m g:hr:r file1 	# 增加组权限 
[root@xwz ~]# setfacl -x g:hr file1 	# 删除组权限 
[root@xwz ~]# setfacl -b file1 			# 删除所有acl权限

ACL中的mask有效权限

指的是用户或群组能拥有的最大ACL权限,也就是说给用户或群组设定的ACL权限不能超过mask规定的权限范围,超出部分做无效处理

修改上面newfaile的mask值
setfacl -m m::rwx /workdir/newfile 	#m表示修改mask权限,不用指定用户
getfaCl newfile

特殊权限

文件的特殊权限包括:SUID 4、SGID 2、SBIT 1

suid 4 # 使用文件所有者身份执行文件<针对文件>

sgid 2 # 新建文件继承目录属组<针对目录>

sticky 1 # 文件只能由文件拥有者,root,文件夹拥有者删除<针对目录>

  • suid:借出程序所有者的权限

    s:程序所属主有x权限

    S:程序所属主没有x权限

SUID权限仅对二进制程序有效,只能运用在可执行文件上。如果给一个非二进制文件附加suid权限,则会显示大写S,属于无效。

仅在本程序中拥有该权限

属主拥有s权限,即可将自己的权限暂时借给其他人使用

系统会检查进程的所有者,根据所有者设置的权限来确定是否对文件有权限

[root@wdy ~]# ll /etc/shadow 
----------. 1 root root 1760 9月 5 11:12 /etc/shadow # 普通用户依旧是可以修改密码 
[root@wdy ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
普通用户无法修改存放密码的shadow文件,在使用passwd这个命令时,是借用了属主root的执行权限

chmod u+s file
chmod u-s file
chmod 4765 file
  • SGID:借出用户组的权限

    可运用于文件或目录

    二进制程序有效

    执行者拥有x权限

    执行过程中暂时拥有用户组权限

    高级权限的类型

    s:程序所属主有x权限

    S:程序所属主没有x权限

chmod g+s /workdir	#对目录添加特殊权限,在该目录下所有用户创建的文件或者目录的所属组都和当前一样
cd /workdir
touch file
ll 
  • SBIT 权限:用来做共享目录

    stiky权限:

    当属主拥有x权限时,用小写的字母t表示,当属主没有x权限时,用大写字母T权限表示1

    只针对目录有效

    **用户在此目录中创建文件时,只有 ** root 用户和自己可以删除该文件,其他用户是不可以修改此文件

    典型例子/tmp这个目录

chmod 777 /workdir
chmod o+t /workdir
su - zhangsan
cd /workdir	
touch zhangsanfile
exit

su - lisi
cd /workdir
touch lisifile
rm -f zhangsanfile # 删除失败
  • 设置或者修改特殊权限
chmod u+s file 
chmod g+s dir 
chmod o+t dir 
chmod 4777 file 
chmod 7777 file 
chmod 2770 dir 
chmod 3770 dir

umask值

进程 新建文件、目录的默认权限会受到umask的影响,umask表示要减掉得到权限

[root@wdy ~]# umask # 查看当前用户的umask权限 
0022 
默认文件的权限是666-umask	目录是777-umask
[root@wdy ~]# umask -S # 查看最终有的权限 
u=rwx,g=rx,o=rx 
[root@wdy ~]# touch file1 
[root@wdy ~]# mkdir dir1 
[root@wdy ~]# ll -d dir1/ file1 
drwxr-xr-x. 2 root root 6 99 09:29 dir1/ 
-rw-r--r--. 1 root root 0 99 09:29 file1

修改umask的值(临时)

[root@xwz ~]# umask 0000 
[root@xwz ~]# mkdir dir2 
[root@xwz ~]# touch file2 
[root@xwz ~]# ll -d file2 dir2 
drwxrwxrwx. 2 root root 6 99 09:31 dir2 
-rw-rw-rw-. 1 root root 0 99 09:31 file2

修改umask值(永久)

vim /etc/profile

source /etc/profile #立即在当前shell中生效

文章来源:https://blog.csdn.net/dreamnn/article/details/135414741
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。