基于Linux的文件权限

一、文件权限存在的意义

系统最底层安全设定方法之一
保证文件可以被可用的用户做相应的操作

二、文件权限的查看

1、文件权限的查看
查看文件属性(详细信息):
ls -l +文件名
基于Linux的文件权限
查看目录属性
ls -ld +目录名字
基于Linux的文件权限
ll +文件名
基于Linux的文件权限
ll -d +目录名
基于Linux的文件权限

三、文件权限读取

-|rw-r–r--| 1 |root |root| 0|0ct 3 04:15| westos1
[1] [2] [3] [4] [5] [6] [7] [8]
基于Linux的文件权限
[1]文件类型
-:普通文件
l:软连接(文件的快捷方式)
d:目录
s:套接字(能够提供交互)
b:块设备(存储系统的资源或文件)
c:字符设备
[2]文件权限
|rw-r–r--|
rw-:用户权限
r–:组权限
r–:其他*限
[3]:文件内容被系统记录次数
[4]:用户
[5]:组
[6]:大小
[7]:最后一次被修改的时间
[8]:文件名

四、更改文件用户及用户组

chown|chgrp
在验证指令之前,我们先建立实验所需的一些文件及目录
基于Linux的文件权限
chown 用户名 文件名|目录名
基于Linux的文件权限
chown 用户名:组名 文件名|目录名
基于Linux的文件权限
目录的用户名及组名更改,而目录下的文件的用户名及组名未更改
chown -R 用户名:组名 目录名(同时修改目录,以及目录下文件的用户以及组)
基于Linux的文件权限
-R表示递归,很明显的观察到目录下的文件的用户名以及组名与目录的组名和用户名相同
chgrp 组名 文件名|目录名
基于Linux的文件权限
chgrp -R 组名 目录名(同时修改目录,以及目录下文件的组)
该指令用法与chown -R的指令用法相同

五、改变文件的权限

1、对权限的理解
r 对文件:是否可以查看文件内容
对目录:是否可以查看目录中有什么子文件或子目录
w 对文件:是否可以改变文件所记录的字符
对目录:是否可以更改目录中子目录或子文集的源数据
x 对文件:是否可以通过文件名调用文件内记录的程序
对目录:是否可以进入目录
2、更改方式
在更改之前,我们先明确操作用户所拥有的权限
基于Linux的文件权限
对文件cq1-cq3,其他用户的权限均只有查看的权限
基于Linux的文件权限
因此,cq用户对cq1文件进行写入时,被系统拒绝。
在次基础之上,我们再进行权限修改。更改方式主要有以下3种。
1)chmod <u|g|o><+|-|=><r|w||x|> file|dir
基于Linux的文件权限
执行完指令后,其他用户对cq1文件不仅能查看同时还能写入。
指令中的u,o,g代表用户,组以及其他用户
+,-,=代表添加,删除,设定权限
r,x,w代表读,写,调用。
基于Linux的文件权限
该指令,能一次修改一个文件的多个权限。
除此之外,还能使用递归的方法,使目录下的文件的权限与目录相同
基于Linux的文件权限
2)chmod 数字 file|dir
(r–=4,-w-=2,–x=1)
基于Linux的文件权限
第一个数字代表用户权限,第二个数字代表组的权限,第三个数字代表了其他用户的权限
3)chmod --reference=file|dir file|dir(使后一个文件或目录的权限与前一个相同)
基于Linux的文件权限
5、系统默认权限的设定 umask
umask 查看系统建立文件默认保留的权力
基于Linux的文件权限
umask 077 临时修改系统的默认值(退出shell后还原)
若想永久更改
vim /etc/profile 查询关键字umask,将022改为其他数字(002为普通用户的umask)
基于Linux的文件权限
vim /etc/bashrc 查询关键字umask,将022改为其他数字(二者所修改的数字相同)
修改后不会立刻生效,我们可以重启shell,或者运行
基于Linux的文件权限
source /etc/profile
source /etc/bashrc
基于Linux的文件权限
所修改的umask将立刻生效。

七、特殊权限

1、sticky ##粘制位
作用:只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件所以者删除
设定方式:
chmod o+t dir
chmod 1xxx dir
基于Linux的文件权限
在未设置粘制位时,实验发现,cqq用户可以删除cq用户的文件
接下来,我们设置粘制位。t代表设置成功。
基于Linux的文件权限
设置完成后,我们再进行一次实验
基于Linux的文件权限
同样使用cqq用户删除cq用户的文件,设置粘制位后,便无法删除。
2、sgid ##强制位
作用:对文件:只针对与二进制可执行为文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的所有组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
设定方式:
chmod g+s file|dir
chmod 2xxx file|dir
先讨论,针对目录的情况
基于Linux的文件权限
接着,我们设置强制位
基于Linux的文件权限
设置完成后,再重复设置前的一系列操作。
基于Linux的文件权限
用cq用户在组位student的目录下建立文件,文件的组名仍是cq用户的组名
基于Linux的文件权限
cq用户在该目录下建立的文件的组名与目录的组名相同
在针对文件的情况下:
基于Linux的文件权限
明确watch文件使属于root用户的二进制文件。利用cq用户执行watch指令,并在root用户中查看所有watch的进程。建立实验前的对比。
基于Linux的文件权限
设置强制位后,cq用户执行watch指令时,该进程的所有组为root
3、suid ##冒险位
作用:只针对二进制可执行文件。
当文件上有suid时,任何人执行这个文件中记录的程序产生的进程都属于文件所有人
设定方式:
chmod u+s file|dir
chmod 4xxx file|dir
基于Linux的文件权限
同样以watch指令为例。
基于Linux的文件权限
此时在cq用户上所执行的watch指令的所有人为root。