app教程网 学习教程 linux 文件权限设置(linux文件权限是如何管理的)

linux 文件权限设置(linux文件权限是如何管理的)

其实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

CONFIG_EXT3_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/sda1 /fs1

然后将test1创建的具有读写权限的文件设置为test2:

[root@mail root]#chmod -R 777 /fs1

允许所有用户增加文件对目录的权限:

首先用test1登录系统,执行命令:

[test1@mail test1]# cd /fs1

[test1@mail fs1]# echo 'Create by test1' test1.txt

[test1@mail fs1]# chmod go-r test1.txt

[test1@mail fs1]# ll test1.txt

-rw------- 1 test1 test1 17 Jul 14 22:11 test1.txt

而下面的操作可以让其他人除了test1.txt除外)之外没有读写test1.txt的权限。首先用test2登录系统,然后执行以下命令:

[test2@mail test2]# cd /fs1

[test2@mail fs1]# cat test1.txt

cat : test1.txt Permission denied

然后使用test1登录到系统并执行以下命令:

[test1@mail fs1]# setfacl -m u:test2:rw test1.txt

这将更改权限,允许test2对该文件具有读写权限。让我们来看看它的文件属性的变化:

[test1@mail fs1]# ll

-rw-rw-r--+ 1 test1 test1 10 Feb 16 13:52 test1.txt

你会在后面看到一个附加的“”,表示这个文件使用了acl属性设置,然后使用命令getfacl查看ACL文件属性设置:

[test1@mail fs1]# getfacl test1.txt

# file: test1.txt

# owner: test1

# group: test1

user:rw-

user:test2:rw-

group:rw-

mask:rw-

other:r--

您可以看到test2拥有读写该文件的权限。

让我们用test2登录系统,执行下面的命令,看看会发生什么。

[test2@mail test2]# cd /fs1

[test2@mail fs1]# cat test1.txt

Create by test1

原来test2可以读取test1.txt文件。

[test2@mail fs1]# echo 'Modify by test2' test1.txt

[test2@mail fs1]# cat test1.txt

Create by test1

Modify by test2

现在test2也可以修改test1.txt文件了。

然后用test3登录系统:

[test3@mail test3]# cd /fs1

[test3@mail fs1]# cat test1.txt

cat : test1.txt Permission denied

呵呵,除了test1和test2(root除外),其他用户都没有读写test1.txt的权限。

本文来自网络,不代表本站立场,转载请注明出处:https: