其实Windows系统和Linux系统差不多。Windows系统文件和目录都是只读隐藏的,Linux也一样。在Linux中,每个文件都有特定的属性。包括两个方面:主要文件类型和文件权限。它可以分为五种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。
所谓文件权限,是指对文件的访问权限,包括对文件的读取、写入、删除和执行。Linux是一个多用户操作系统,它允许多个用户同时登录和工作。因此Linux将文件或目录与用户或组相关联。ACL:访问控制列表(ACL)为计算机提供了更好的访问控制,其作用是限制包括root在内的所有用户访问文件、资源或套接字。下面教大家一个简单的设置方法。
检查系统核心
首先,检查你的Linux系统的内核是否支持ACL。因为并不是Linux系统的每个内核都有支持ACL的功能,而最简单的方法就是检查系统的当前内核是否可以支持:
[root @ mail/]# cat/boot/config-kernel-version | grep-I ext3
CONFIG_EXT3_FS=m
配置_外部3_IDEX=y
CONFIG_EXT3_FS_XATTR_SHARING=y
CONFIG_EXT3_FS_XATTR_USER=y
CONFIG_EXT3_FS_XATTR_TRUSTED=y
CONFIG_EXT3_FS_ACL=y
这时候如果能看到以上几项,说明已经编到核心里了。ext3文件系统已经支持ACL函数,可以在编译核心的选项中找到。如果编译时找不到,可以去ACL官网安装内核(acl.bestbits.at/)。
第二步安装分区
您可以通过以下方式挂载分区和启用ACL:
#mount -t ext3 -o acl /dev/sda1 /fs1
也可以直接写在/etc/fstab文件中,这样开机后就可以支持ACL功能了:
#vi /etc/fstab
步骤3设置ACL权限
ACL通常是为个人用户设置的。以下是几个不同的例子:
例如,如果需要创建三个用户:test1、test2和test3,可以先以root身份登录系统,然后执行以下命令分别创建三个用户名和密码:
[root@mail root]#adduser test1
[root@mail root]#adduser test2
[root@mail root]#adduser test3
[root@mail root]#passwd test1
[root@mail root]#passwd test2
[root@mail root]#passwd test3
然后将一个ext3文件挂载到目录/fs1:
[root @ mail root]# mount-t ext3-o ACL/dev/sda 1/fs1
然后将test1创建的文件的读写权限设置为test2:
[root@mail root]#chmod -R 777 /fs1
让所有用户增加文件对目录的权限:
使用test1登录系统,并执行命令:
[test1@mail test1]# cd /fs1
[test1@mail fs1]# echo '由test1创建' test1.txt
[test1 @ mail fs1]# chmod go-r test1 . txt
[test1@mail fs1]# ll test1.txt
-rw-1 test1 test1 14年7月17日22:11 test1.txt
下面的操作可以让其他人没有权限读写test1 . txt(root除外)除了test1。使用test2登录到系统后,执行以下命令:
[test2@mail test2]# cd /fs1
[test2@mail fs1]# cat test1.txt
cat : test1.txt权限被拒绝
然后使用test1登录系统,并执行以下命令:
[test1 @ mail fs1]# setfacl-m u:test2:rw test1 . txt
通过这种方式,修改权限允许test2拥有对该文件的读写权限。再次查看其文件属性的变化:
[test1@mail fs1]# ll
-rw-rw-r-1 test1 test1 2016年2月10日13:52 test1.txt
你会在后面看到一个附加的" ",表示这个文件使用了acl的属性设置,然后使用命令getfacl查看ACL的文件属性设置:
[test1 @ mail fs1]# getfacl test1 . txt
# file: test1.txt
#所有者:测试1
#组:测试1
用户:rw-
用户:测试2:rw-
组:rw-
面具:rw-
其他:r -
您可以看到test2拥有读写该文件的权限。
让我们用test2登录系统,执行下面的命令,看看会发生什么。
[test2@mail test2]# cd /fs1
[test2@mail fs1]# cat test1.txt
由测试1创建
原来test2可以读取test1.txt文件。
[test2@mail fs1]# echo '由test2修改' test1.txt
[test2@mail fs1]# cat test1.txt
由测试1创建
由测试2修改
现在test2也可以修改test1.txt文件了。
然后用test3登录系统:
[test3@mail test3]# cd /fs1
[test3@mail fs1]# cat test1.txt
cat : test1.txt权限被拒绝
嘿嘿,除了测试1、测试2外没有其他用户有读写test1.txt的权限(根除外)。