Linux的文件权限及其设定方法

1.文件属性

查看文件属性

ls -l file   #查看文件属性
ls -ld dir   #查看文件夹属性
ls -lR /etc  #递归显示,可以显示文件夹内的文件

8个文件属性的意义

  • | rw-rw-r-- | 1 | kiosk | kiosk | 382 | Mar 30 09:09 | test1
属性 序号
- [1]
rw-rw-r– [2]
1 [3]
kiosk [4]
kiosk [5]
382 [6]
Mar 30 09:09 [7]
test1 [8]

[1]文件类型

常见的文件类型

字符 类型
- 表示空文件,普通文件
l 软链接
d 表示目录
c 字符设备(如shell在 /dev/pts/0)
s socket 套接字符,与程序交互的“门”
b block 块设备(如系统的第一块硬盘是 /dev/sda 插入u盘是 /dev/sdb)
p 管道文件

[2]文件权限

rw-rw-r–
每三个字符一组,分别是文件的所有人(u),所有组(g),其他人(o)

对于文件:

r ---->是否可读
w---->是否可写
x ---->是否可执行

对于目录:

r ---->是否可查看目录中的文件
w---->是否可在目录中新建删除
x ---->是否可进入目录

修改权限的方式:

字符方式

chmod [u,g,o]+[r,w,x] 文件(夹)名

#相同的赋予或撤销权限操作可合并
chmod ug+r file      			#file文件的所有人,所有组可读

#同一用户修改多个权限 
chomd u=rwx file                #(=为赋予指定权限),file的所有人可读可写可执行

#不同的用户可用,隔开   
chmod ug+r,o+x file 			#file的所有人所有组可读,其他人可执行

数字方式
r=4 w=2 x=1
即权限可用0~7的数字表示,最高权限为777

chmod 777 file    				#file对ugo都可读可写可执行
[3]

对文件:硬链接个数(文件内容被系统记录的次数)
对目录:子‘目录‘的个数(不包含子文件)

[4]文件所有人

chown可修改文件和目录(不加-R只修改目录,不修改目录中的文件)的所有人,或所有人和所有组
原属性如下:
在这里插入图片描述

chown kiosk /mnt/file1			#修改file1的所有人为kiosk

在这里插入图片描述

chown kiosk /mnt/dir 			#修改dir的所有人为kiosk,不修改dir中的文件

在这里插入图片描述

[5]文件所有组

chgrp可修改文件和目录(-R)所有组

chgrp kiosk /mnt/dir			#修改dir所有组为kiosk,不修改dir中的文件

在这里插入图片描述

chgrp -R kiosk /mnt/dir			#修改dir所有组为kiosk,同时修改dir中文件的所有组为kiosk

在这里插入图片描述

#chown可同时修改文件(目录)所有人和所有组,所有人在前,所有组在后,用.或:隔开
chown kiosk.kiosk /mnt/file2	#修改file2的所有人,所有组为kiosk

在这里插入图片描述

chown kiosk:kiosk /mnt/dir -R	#修改dir及其中文件的所有人所有组为kiosk

在这里插入图片描述

[6]

对文件:文件大小
对目录:目录中子文件元数据大小(元数据matedate可以理解为文件的属性,也就是描述文件属性的那一串字符([1]~[8])的字节数)

[7]最后修改时间

可用touch修改此时间

[8]文件名

可用mv修改

2.修改默认预留权限

系统默认为022

只修改当前shell中的预留权限(临时更改)

umask 077   					#默认创建目录权限为777-077=700,文件再减111为600

修改系统的默认预留权限(永久更改)

vim /etc/profile   				#系统配置文件

在这里插入图片描述

   vim /etc/bashrc    			#shell配置文件 

在这里插入图片描述

source /etc/profile    
source /etc/bashrc				#重新读取文件,使更改生效	

3.特殊权限

(1)sticky 粘滞位

作用:
针对目录生效,当设置sticky权限后,这个目录中的文件只能被文件所有人删除
注意:
当对文件操作时,也会显示t,但不会有作用,非文件所有人也可以删除

设定方式:

chmod o+t /mnt/dir     				#只针对other,o位会出现t
chmod 1755 /mnt/dir

在这里插入图片描述

(2)sgid和suid 强制位和冒险位

作用:
<1>针对目录:
当设置强制位后,任何人在该目录中建立的文件,都属于该目录的所有组或所有人(g+s或u+s)

<2>针对文件(只能针对可执行二进制文件):
不设置强制位时,谁执行这个文件,这个进程就是谁的。设置后,无论是谁执行此文件,进程都属于这个文件的所有人或组(u+s或g+s)
PS:意味着身份提升或下降

设定方式:

chmod g+s /mnt/dir	  				#操作成功后g位出现s
chmod g+s /mnt/file3
#或
chmod 2755 /mnt/dir
chmod 2644 /mnt/file3

在这里插入图片描述

chmod u+s /mnt/dir     				#操作成功后u位出现s
chmod u+s /mnt/file3
#或
chmod 4755 /mnt/dir
chmod 4644 /mnt/file3

在这里插入图片描述

chmod 6755 /mnt/dir	  				#操作成功后u和g位都出现s
chmod 6644 /mnt/file3

在这里插入图片描述
同理:
粘滞位=1,强制位=2,冒险位=4,可根据需要自由相加组合,这里不再赘述

4.acl权限设定

作用:
让特定用户对特定文件有特定的权限

查看命令:

getfacl file						#查看file的acl权限列表

管理方式:

#开启后(-m添加后)
setfacl -m g:kiosk:rwx file			#让kiosk组的用户对file拥有rwx权限
ls -l file							#会在权限后显示+

在这里插入图片描述

#关闭后(-b后)
ls -l fle							#权限后的+消失,使用原权限设定

setfacl -m u:username:0 file	    #让username用户对file没有任何权限
setfacl -m g:groupname:rwx file	    #让groupname组的用户对file拥有rwx权限
setfacl -x u:username file          #删除username用户的acl列表信息
setfacl -x g:groupname file	        #删除groupname组的acl列表信息
setfacl -b file			   			#关闭file文件的acl列表功能
			           				#(关闭会删除列表里-m添加的信息)

mask值

默认是acl列表中授予权限的最大值
添加acl列表后,使用chmod将g权限改小后会出现权限不足的问题

chmod 757 /mnt/file

在这里插入图片描述
可使用下面方式修改回来

setfacl -m m:rwx /mnt/file        		#让最大权限值为指定的rwx

5.acl默认权限设定

默认权限只针对目录设定
acl默认权限只针对设定好后新建立的目录和文件生效并继承,之前存在的目录和文件不会受影响,若要是之前的文件和目录也生效,还需要再设定acl普通权限

设定方式:

setfacl -m d:u:student:rwx /dir/  		 #下图1,让kiosk用户对dir目录下以后出现的子目录和文件有rwx权限
touch  /mnt/file4						 #设定好后新建一个文件file4
setfacl -k /dir/                   		 #关闭acl默认权限列表

原来存在的file不受影响:
在这里插入图片描述
设置好后创建的file4继承默认权限:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Dreaming5498/article/details/88969726