1.权限信息的查看及读取
1.1 权限信息的查看
- 文件属性的查看方式: ls -l filename
- 文件属性的查看方式也可以用: ls -ll filename
- 目录属性的查看方式为 ls -ld dir
说明:ls -ld 查看目录本身的权限
注意:ls -l dir 查看的是目录中子目录或者是文件的权限
1.2 权限信息的读取
文件的属性被叫做文件的元数据。一种元数据用1个字节(byte)来记录内容。
在上图中我们可以看出此文件的元数据一共有7种,则共有7个字节来记录。
- 对于文件和目录属性每一位的解释
对于文件属性每一位的理解 | 对于目录属性每一位的理解 |
---|---|
[1] 文件类型: -表示普通文件,d表示目录,l表示软链接,b表示块设备,c表示字符设备,s表示socket关键字,p表示管道 | [1] 目录类型 |
[2] 用户权限(9个字符) 分为所有人的权限、所有组的权限、其他人权限 | [2] 用户权限(9个字符)分为所有人的权限、所有组的权限、其他人权限 |
[3] seLinux Context(.表示系统中的selinux安全开启) | [3] seLinux Context(.表示系统中的selinux安全开启) |
[4] 文件硬链接个数(文件内容被系统记录的次数) | [4] 目录中子目录的个数(不包括文件的个数) |
[5] 文件的拥有者 | [5] 目录的拥有者 |
[6] 文件的拥有组 | [6] 目录的拥有组 |
[7] 文件的大小 | [7] 目录中子文件或者子目录属性大小(元数据的大小) |
[8] 文件最后一次被修改的时间 | [8] 目录中文件最后一次被修改的时间 |
[8] 文件名称 | [9] 目录名称 |
- 对于目录属性中第7位目录中子文件或者子目录属性大小解释
首先在/mnt建立一个名为westosdir的目录,然后首先查看下westosdir目录属性。
在westosdir的目录中建立名为zhang的目录,zhang的属性大小8(元数据大小)+5=13。重新查看下/mnt/westosdir目录,westosdir目录的属性的大小应该为13+6=19。
2.文件用户以及用户组的管理
2.1 更改文件用户以用户组
执行的命令 | 含义 |
---|---|
chown username file | 更改文件拥有者 |
chgrp groupname file | 更改文件的拥有组 |
chown username : groupname file | 同时修改文件的所有拥有者和拥有组 |
chown -R username file | 更改目录的本身以及目录中的内容的拥有者 |
chown -R groupname file | 更改目录的本身以及目录中的内容的拥有组 |
实验:更改文件用户以及用户组
1.首先建立在/mnt的监视界面:
监视的命令为:
2.在/mnt下建立westos1-westos4,4个文件以及建1个westosdir的目录,再在/mnt/westosdir目录下建立file1-file3,3个文件。
3.建立3个用户,进行修改文件用户以及文件用户组的操作:
注意:更改目录本身和里面的内容的所有人所有组都作改变,要做递归的修改,需要加-R
3.普通权限的类型和作用
3.1 用户对文件的身份
用户对文件的身份 | 解释 |
---|---|
u | user(文件的拥有者) |
g | group(文件的拥有组) |
o | other(文件的其他人) |
3.2 文件的权限位
在上图中可以看出文件拥有者享有读、写与可执行的权利,文件拥有组享有可读的权利,其他人享有可读的权利。
举例说明用户对文件身份享有的权利
在上图中可以看出,westos1文件的拥有者(lee)对文件享有rw(读写)的权利,westos1文件的拥有组(westos)对文件享有r(读)的权利,westos1文件的其他人对文件享有r(可读)的权利。
- 用户的身份匹配
文件的拥有者>文件的拥有组>其他人
3.3 文件权限的读取
文件权限的2-10位是文件所使用到的权限,共九个字符,划分为三个部分。
3.4 文件权限的类型解释
3.4.1文件用户者对文件的权限
1.r:是否可以查看文件的内容
2.w:是否可以更改文件中的内容
3.x:是否可以调用文件内部记录的程序
3.4.2 文件拥有者对目录的权限
1.x:是否可以进入目录
2.w:是否可以更改目录中文件的存在(例如新建和删除)
3.r:是否可以列出目录中的文件
4.文件权限的设定方式
文件权限的设定方式 | 命令格式用法 |
---|---|
1.以字符方式设定文件权限 | chmod 参数 权限模式 操作对象 |
2.以数字方式设定文件权限 | chmod 参数 权限值 操作对象 |
3.按照文件模板复制设定文件权限 | chmod 参数 - - reference= 模板 操作对象 |
4.1 以字符方式设定文件权限
chmod <u/g/o/a> <+/-/=><r/w/x> 操作对象
u 文件拥有组 | g 文件拥有组 | o 其他人 | a 所有权限 |
---|---|---|---|
+:表示添加 | -:表示撤销 | =:表示设定 | |
r读 | w写 | x执行 |
指令举例:
chmod u=rwx 文件名称
chmod u=rwx,g+rw,o-r 文件名称
chmod a-w dir
注意:相同位可以合并,不同位用,隔开
4.2 以数字方式设定文件权限
以数字方式设定文件权限格式为: chmod 参数 权限值 操作对象
文件权限的每3位可以用一个8进制的数字表示(即为权限值)。
文件权限 | 对应的权限值 |
---|---|
- - - | 0 |
- - x | 1 |
- w - | 2 |
- w x | 3 |
r - - | 4 |
r - x | 5 |
r w - | 6 |
r w x | 7 |
实验1:将westos2文件的权限变为westos1文件的权限
实验2:将westos2文件的权限变为westos1文件的权限
将westos3文件的权限改为rwxrwxrwx
4.3 .按照文件模板复制设定文件权限
按照文件模板复制设定文件权限格式为:chmod 参数 - - reference= 模板 操作对象
实验:将westos3文件的权限复制给westos1文件
5.系统预留权限阈值
资源存在意义是为了共享,权限开放越大共享越多,但安全性也更小;权限 开放越小,系统也就越安全,但共享资源变少。因此,在系统中,我们需要开放应该开放的权利,保留不安全的权利最终用于最后确保系统的安全性和一定的功能性。
5.1 系统预留阈值的设定
umask——系统中使用umask来查看并设定预留权限阈值
umask级别越高系统越安全,权限越小
注意:
用户身份不同,安全级别也不同。
预留阀值是022,系统的满权限是777,所以,建立目录的权限是777-022=755,建立的文件的权限是755-111=644(其中111是文件系统保留权限,是硬盘软件设定的不能改变。
5.2 临时修改系统预留阈值
临时修改系统预留阈值:umask 数字
umask 数字设定系统预留阈值的方式属于临时设定方式,当关闭当前shell窗口,重新打开另外一个shell窗口,此设定的值也会恢复此前的系统预留阈值。
5.3 永久修改系统的预留阈值
永久修改系统的预留阈值需要修改:shell配置文件(/etc/bashrc)+ 系统环境配置文件(/etc/profile)
具体步骤为:
1.vim /etc/bashrc vim/etc/profile 在两个文件中进行修改umask的值
2.source /etc/bashrc source /etc/bashrc 利用source命令进行调用
说明:/etc/bashrc和/etc/profile的umask必须保持一致,更改完成后需要用source调用
6.Linux中的特殊权限
linux中的特殊权限 | 具体用法详解 |
---|---|
stickyid | 对于文件,即使文件没有被程序调用也会被加载到交换空间;对于目录,有stickyid权限时,所有用户在该目录下均可创建文件,但只有文件拥有者和root用户可以删除该目录下的文件 |
suid | 只针对二进制的可执行文件,发起使用suid权限的文件时,都以文件所有人身份执行 |
sgid | 针对二进制可执行文件,发起时以文件所有组身份执行,和是谁发起无关;针对目录,目录中新建文件所属组会自动与目录所有组保持一致 |
6.1 stickyid(粘滞位)
- stickyid(粘滞位):chmod o+t dir
other(其他人)位t权限开启时,针对目录,目录里的文件只能被文件所有人拥有删除的权利;t权限开启时,对于文件,即使没有被程序使用也会自动加载到系统内存中。
实验说明:
1.首先创建/mnt/westosdir的权限开放的目录,对/mnt/westosdir进行监控:
2.用户lee在/mnt/westosdir目录下建立一个文件file1,用户linux在/mnt/westosdir目录下建立一个文件file2
3.用户lee既能删除自己的文件file1,也能删除linux用户的文件file2
4.other位t权限开启后,用户只能删除属于自己的文件
6.2 suid(冒险位)
suid(冒险位) 设定命令在执行的时候必须用一个固定的用户身份去执行,使用时发起以文件所有人身份执行
- chmod u+s 文件/目录 以文件所有人身份执行
实验:
1.对cat进程进行监视:
注意:进程的所有人和文件的所有人是没有关系的,谁执行的动作产生的进程就是谁的
2.设定suid在二进制可执行文件/bin目录上进行开启
3.执行后的结果为:chmod u+s 以文件所有人身份执行的文件
6.3 sgid(强制位)
针对二进制可执行文件 该命令发起的程序以命令的所有组身份执行;针对目录 ,目录新建文件的所属组与该目录的所有组保持一致
实验1:
chmod g+s 以文件所有组身份执行
1.对cat进程进行监视:
2.chmod g+s 以文件所有组身份执行
实验2:
chmod g+s 针对目录 ,目录新建文件的所属组与该目录的所属组保持一致,与文件建立者无关
1.对/mnt目录进行实时的监控
2.lee用户在/mnt目录建立file1文件,linux用户在/mnt目录下建立westosdir目录
3.chmod g+s 针对目录 ,目录新建文件的所属组与该目录的所属组保持一致,与文件建立者无关
7.acl用户列表
传统的权限仅有 owner,group,othe三种身份,搭配 r,w,x三种权限。并没有办法 单纯的针对某一个使用者或某一个群组来设置特定的权限需求 , 此时就得要使用 ACL( Access Control List 文件访问控制列表) 这个机制。’
7.1 权限列表的查看与设定
7.1.1 权限列表的查看
查看权限列表的指令为:getfacl 文件名称
当权限最后一位不是.而是 +时,代表权限列表的开启
权限列表开启后包括:文件的名称;文件所有人权限;文件所有组的权限;特殊用户的权限;文件组成员的权限;其他人的权限
注意:mask值表示能赋予特殊用户最大权利的值
实验:
1.对特殊用户lee设定权限
2.对用户lee设定权限后,用户lee可以对文件所有人为root的文件进行读、写与执行。
3.其他用户不能对这个文件进行读写与执行的能力。
7.1.2 权限列表的设定
权限列表的设定用setfacl命令进行设定,setfacl的具体用法在下表中。
setfacl+具体参数 | 设定的功能解释 |
---|---|
setfacl -m u:指定用户:设定的权限 文件 | 对指定文件进行特殊用户权限的设定 |
setfacl -m g:指定用户组:设定的权限 文件 | 对指定文件进行特殊用户组权限的设定 |
setfacl -x 指定用户 | 删除指定用户 |
setfacl -b 文件 | 关闭文件列表功能 |
实验:
1.对/mnt目录下file文件的权限列表进行实时监控
2.设定特殊用户lee的用户权限为rw-,设定特殊用户lee的组的权限为rwx
3.删除特殊用户lee的用户和特殊用户linux的用户组
4.关闭文件的权限列表后文件属性中的+号会变为.号
7.2 facl列表权限匹配顺序资源拥有者
facl列表权限匹配顺序资源拥有者:特殊指定用户>权利开放多的组>权利开放少的组>其他用户
实验1:
实验2:
7.3 facl的mask阈值
mask阀值是指定用户能够获取的最大有效权限。
当设定过facl列表后,用chmod命令缩减文件权限很能损害mask值
实验:
mask值的设定:setfacl -m m:权限值 操作对象
7.4 facl的default权限
default权限的设定方式:setfacl -m d<u:g>:权限目录
setfacl -R -m u:指定用户:rwx dir
-R递归权限列表,使目录和目录下文件权限列表都开启(更改的是原本目录下存在的文件,对于新建立的文件不更改)
setfacl -d -m u:指定用户:rwx dir
-d默认权限列表,(只针对目录有效,目录下的新建文件会开启权限列表,而目录里原本内容不改变)
8.attr权限—attr权限限制所有用户
attr指令 | 指令含义 |
---|---|
lsattr dir/file | 查看目录或者文件的attr权限 |
chattr +i dir/file | 对目录或者文件权限不能做任何更改 |
chattr +a dir/file | 对目录或者文件权限可以添加但不可以删除 |
9.本节练习
1.
2.
3.
4.