基于Linux的文件权限控制
Linux用户分为:拥有者、组群(Group)、其他(other)
1.权限存在的意义
系统设置权限是为了对一些重要的文件/数据进行保护,对不同的用户开放不同的权限可防止被人对文件或者数据进行操作,假设系统管理员创建了一个特别重要的.txt文件,并将权限设置为-rex------,将文件随便放在一个目录下,虽然此时不能对文件内容进行任何操作,但是如果此目录具有w权限,则文件此时就有可能被别人删除,造成损失,故我们需要对系统和文件设置权限,确保安全。
Linux的权限对于文件与目录的意义
权限对文件的意义:
r :表示是否可以查看文件中的字符,可读取此文件的实际内容。
w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件),表示是否可以改变文件中记录的字符,如果没有r权限,无法w。
x :该文件具有被系统执行的权限,是否通过文件名称调用文件内记录的程序。可以删除。
权限对目录;
r:read contents in directory。表示具有读取目录结构列表的权限,可以查看目录中有什么文件。
w:modify contents in directory。表示具有更改该目录结构列表的权限,是否可以在目录中管理文件,是否可以更改目录中文件的元数据。如:新建文件与目录;删除已经存在的文件与目录(不论该文件的权限如何),将已经存在的文件或目录进行重命名,转移该目录内的文件、目录位置
x :access directory。目录的x代表用户能否进入该目录称为工作目录的用途。
2.权限的识别(用下列两行代码可查看文件权限和文件夹权限)
ls -l file
ls -ld dir
3.权限的查看与理解
- rw -r--r-- 1 root root 216 May 12 2017 /mnt/rht
【1】 【2】 【3】 【4】 【5】 【6】 【7]】 [8]
【1】文件类型 (如上语句,【1】位置为-代表此文件为一个普通文件,开头文件的形式注解如下)
- ##普通文件
d ##目录
l ##软连接ln
s ##socket
c ##字符设备
【2】文件权限(如上语句所示文件权限为rw-|r--|r--,意思为所有者对文件可读可写,组员对此文件可读,其他对文件可读,不能进行其他操作)
rw- | r-- | r--
[1] [2] [3]
[1]为 u所有者对文件能作的事 [2]为g组员对文件能作的事 [3]为o其他人对文件能作的事
【3】文件硬连接个数(文件内容被系统记录的次数)
【4】文件的拥有者
【5】文件的拥有组
【6】文件的大小
【7】文件最后一次被修改的时间
【8】文件名称
目录的查看
d rwxr-xr-x. 2 roo t root 4096 Jul 30 9:05 /mnt/
【1】 【2】 【3】 【4】 【5】 【6】 【7】 【8】
【1】类型
【2】权限
【3】目录中子目录的个数
【4】用户
【5】组
【6】子文件或子目录元数据大小(描述数据的数据对文件来说就是描述文件的属性,元数据每一类占用一个字节)
【7】最后一次被更改的时间
【8】名称
4.用户和用户组
chmod:用于改变文件或目录的访问权限,用户可用它控制文件或目录的访问权限。确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。
chgrp:用chgrp命令来更改某个文件或目录所属的组。语法:chgrp [选项] group filename
chown:更改某个文件或目录的所有者和所属组。语法:chown [选项] 用户或组 文件
说明:chown将指定文件的拥有者改为指定的用户或组。用户可以是用户名或用户ID。组可以是组名或组ID。文件是以空格分开的要改变权限的文件列表,支持通配符。
1.此命令必须用root用户执行
chown username file|dir
chown -R username dir
chown username:group file|dir
chgrp group
chgrp -R group
2)权限的管理
字符形式
chmod <u|g|o> <+|-|=> <r|w|x> file|dir
(如下图所示,上面这句chmod是用来修改文件或目录的访问权限,u:拥有者/g:组/o:其他 +:增加权限/ -:删除权限 r:可读/w:可写/x:可操作)
数字方式(r/w/x可用数字表示,用来设置对文件或者目录的权限,其中r:2 w:1 x:0)
计算方法如下
x=2**0*1|0=0|1 (2的0次方乘以1(代表可读)或者0(代表不可读)=计算结果为0(代表不可读)或者1(代表可读))
w=2**1*0|1=0|2 (2的1次方乘以1(代表可写)或者0(代表不可写)=计算结果为0(代表不可写)或者2(代表可写))
r=2**2*0|1=0|4(2的2次方乘以1(代表可操作)或者0(代表不可操作)=计算结果为0(代表不可操作)或者4(代表可操作))
rwx=7 ##7表示 可读 可写 可操作
rw-=6 ##6表示 可读 可写 不可操作
r-x=5 ##5表示 可读 不可写 可操作
r--=4 ##4代表 可读 不可写 不可操作
-wx=3 ##3代表 不可读 可写 可操作
-w-=2 ##2代表 不可读 可写 不可操作
--x=1 ##1代表 不可读 不可写 可操作
chmod 775 /mnt/file ##此句表示对/mnt/file文件 拥有者可读可写可操作 组成员可读可写可操作 其他可读不可写可操作
rwxr-xr-x ##3位一读rwx表示拥有者可读可写可操作 r-x表示组可读不可写可操作 最后的r-x表示其他可读不可写可操作
5.权限列表
特定用户对指定文件有指定权限
-rw-r-r--+ 1 root root 216 May 12 2017 rht (权限列表开启,具体语句详解,参照下题理解)
[[email protected] mut]# getfacl file
file:file #文件名称
#owner:root #文件所有人
#group:root #文件所有组
user::rw- #用户权限
user:kiosk:rwx #特殊指定用户权限
group::r-- #组权限
mask::rwx #权限最大值
other::r-- #其他权限
setfacl -m u:student:rwx file #设定列表用户权限
setfacl -x u:student file #删除列表中的指定用户
setfacl -b file #关闭权限列表
例题1:
1新建用户组,shengchan1,caiwu1,jishu1
2新建用户要求如下:
1)tom1是shengchan1组的附加用户
2)harry1是caiwu1组的附加用户
3)leo1是jishu1组的附加用户
4)新建admin1用户,此用户并不属于以上三个部门
3新建目录要求如下:
1)/cw 目录为财务部存储目录只对财务人员可以写入
2)/sc 目录为生产部存储目录只对生产部人员可以写入
3)/js 目录为技术部存储目录只能对技术部人员可以写入
例题2:拷贝/etc/fstab文件到/var/tmp目录中,设置以下需求:
- 使harry用户对该文件无任何权限
- 使natasha用户对该文件有完全控制权限
- 配置文件所属用户为root
- 配置文件所属组为root
- 其它所有用户对文件拥有读权限
- 其他所有用户对文件没有执行权限