在
linux
系统下,对于文件系统权限而言,常用的是
DAC
(自由访问控制),假设
root
要赋予某个用户执行权限,就必须添加该文件的执行权限。于此同时,另外一些不怀好意用户就有可能利用该权限进行一些增删剪除等破坏活动。这时,我们可以用到
ACL
(扩展访问控制)来解决这样的问题。在现实中用于
Samba
服务器的设置中。
ACL
可以对现有的文件权限进行扩充,在传统的
DAC
模型之外为文件新添加控制协议。
当然了,我们你必须首先要启用
ACL
功能。
在根目录下创建
share
文件夹,使其具有读写权限。
并新建磁盘分区为
/dev/sda5
,格式化后并挂载在
root
目录下的
/share
目录下,
新建用户
liu
,使
liu
用户在
share
文件具有读写权限的情况下具有执行权限。在没有设置之前,用户
liu
没有执行权限。(可以和后面
liu
具有执行权限之后进行对比一下)
首先用
vim
编辑器打开
/etc/fstab
文件,在该文件中新增加一行(这样做的目的是使
acl
权限永久生效当然也可以只对当前用户生效。如果在挂载时在
mount
加上
-o acl
,后面跟正常的挂载参数即可即:
mount -o acl /edv/sda5 /share
),如图所示最后一行,后面的
usrquota
和
grpquota
是后文中做磁盘配额时要用到的,后面会介绍到,这里先不多说。
别忘了,挂载完成后查看一下是否挂在成功,直接输入
mount
即可查看挂载情况。
接下来要做的是设置文件的访问控制功能。可以用
setfacl
这个命令来执行。
setfacl
的用法格式是:
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
例如:
setfacl -x g:staff file
意思是:删除
file
文件对
staff
组的
acl
控制属性
setfacl -m m::rx file
意思是:设置默认
file
文件属性
setfacl -m u:lisa:r file
意思是:增加
lisa
用户对文件
file
的读权限。
好了,言归正传,现在开始设置
share
文件的
acl
属性,
setfacl �Cm u
:
liu
:
rwx /share
设定
liu
用户对
share
文件具有可读可写可执行权限,设定完毕后,用
fetfacl share
命令查看一下是否设定成功。
修改成功后,可以切换到
liu
用户,验证一下是否具有执行权限。验证结果为
liu
用户具有执行权限。
同样,还可以设定属组权限为可读和可执行,比如:
setfacl �Cm g:mygroup:rw share
好了,关于设置文件访问控制权限就到这里,接下来,去了解一下关于磁盘配额的问题。
还是以上面的磁盘
/dev/sda5
为例子,依然挂载在
/share
目录下。
磁盘配额主要是设置在对磁盘空间不足的情况下,对用户使用磁盘空间进行限制。在
linux
服务器的配置中应用广泛。比如:
限制某一群组所能使用的最大磁盘配额
(
使用群组限制
)
限制某一用户的最大磁盘配额
(
使用用户限制
)
以
Link
方式使邮件可以作为限制的配额
(
更改
/var/spool/mail
这个路径
)
等等。
(注
:
由于真正的
quota
读取的是
/etc/mtab
这个文件
,
但这个文件需要重新启动之后才能够以
/etc/fstab
的新数据进行改写
,
所以这时可以
:
1
、重新启动系统
==>reboot
2
、重新使用
remount filesystem
来驱动设定值。)
quota
程序的限制内容主要分为以下几个部分:
soft:
(软限制)这是最低限制容量
,
用户在宽限期间的容量可以超过
soft,
但必须在宽限时间内将磁盘容量降低到
soft
的容量限制下
.
hard:
(硬限制)这是绝对不能超过的容量
.
跟
soft
相比
,
通常
hard
的限度会比
soft
的限度高
,
其实
,soft
到
hard
之间的容量就是宽限的容量
,
可以起到警示作用
.
宽限时间
:
宽限时间就是用户使用的空间超过了
soft limit,
但还没有到达
hard limit,
在这个宽限时间内
,
用户需要将使用的磁盘容量降低到
soft limit
之下
.
当用户的磁盘容量使用情况超过
soft limit
时
,
宽限时间就会自动启动
,
而在用户将容量降低至
soft limit
之下
,
宽限时间就会自动取消。
首先要做的是开启磁盘的
quota
功能(上面的
usrquota
和
grpquota
在此处会用到):
编辑
/etc/fstab
文件
,
加入
usrquota
和
grpquota
。使用命令
mount �Co remount
重新挂载磁盘,
,
使
quota
磁盘可以支持
quota
。完成后用
mount
命令查看一下是否成功。
接着是使用
quotacheck
扫描要使用的磁盘。
使用
edquota
来编辑
liu
用户(或群组)的可使用空间
;
命令为
edquota �Cu liu
注:(设置组的命令为ed
quota �Cg groupname
)
设置完成后保存退出,那下一步呢?当然是启动
quota
了,命令如下:
quotaon �Cvu share
(当然喽!启动
quota
群组时要使用
quotaon �Cvg filename
命令咯)
(同理,关闭
quota
用户或群组时要用
quotaoff
命令哦!
^_^
)
接下来用
edquota �Ct
命令(后面不跟任何参数)来设定当用户超过软限制后,继续使用超出软限制的磁盘空间的宽限期。意思就是当用户的磁盘空间使用量超过软限制以后要在指定的时间内把超出软限制的磁盘空间清空,否则,哼哼!那就对你不起啦,系统就会帮你“清空”了。一般默认的宽限时间为
7
天,但是具体的宽限期就看管理员
root
是怎么设置的了。
好了,设置完成了,但是到底设置的这些内容有效吗?来,一块测试一下吧!
以
su �C liu
命令切换到
liu
用户
在
share
文件夹下复制一些数据看看。