oracle的acl有哪些权限,Linux ACL访问权限控制

2023-09-25 8 0

【摘要】

对于Linux的文件权限控制,我们并不能像windows那样灵活设置多个用户的访问权限,普遍使用的UGO权限管理方式只能对属主、同组用户和其他组用户进行权限管理,很难对每个用户或用户组进行权限管理。ACL就是为了这种局限性而生的。

ACL(Access Control List,访问控制列表),它是对UGO权限管理的方式进行了扩展,可以对任意的用户/组分配读、写和执行权限。

本文转自-学领未来

一UGO权限管理

当一个文件创建后,它具有读(r)、写(w)、执行(x)三种操作方式。UGO权限管理方式将访问文件的操作者简单分为三类:文件属主(u)、同组用户(g)与其他组用户(o)。

文件的三种操作方式用三个二进制位表示,第一位表示读权限,第二位表示写权限,第三位表示执行权限。一个文件的权限属性就是有三类用户对该文件的权限使能的集合。当我们用ls查看一个文件的时候,会显示如下结果:

[root@racdg /]# touch test

[root@racdg /]# ll

-rwxr-xr--    2 root root  4096 Dec 28 13:13 test

最前面的’-’,表示文件为目录类型

第一组的‘rwx’,表示文件属主对文件具有读、写和执行权限

第二组的‘r-x’,表示同组其他用户对文件具有读和执行权限,但没有写权限

第三组的’r--’,表示其他组用户对文件具有读权限,但没有写权限和执行权限

这个时候其他用户是不能对这个文件进行修改的,尝试使用Oracle用户进行修改:

[oracle@racdg ~]$ id oracle

uid=202(oracle) gid=201(oinstall) groups=201(oinstall),202(dba)

[oracle@racdg ~]$ vim test

E45: 'readonly' option is set (add ! to override)

按照一般的方法,我们可以使用chmod和chown命令对该文件权限进行修改,但是如果涉及多个用户,而且要求对一部分用户只有只读权限,另一部分用户有读写权限的时候,就会发现权限位是不够的,那么这个时候就可以使用ACL了。

二ACL权限管理

首先看一下几种类型

类型

定义

ACL_USER_OBJ

文件属主的权限

ACL_USER

额外用户的权限

ACL_GROUP_OBJ

文件属组的权限

ACL_GROUP

额外组的权限

ACL_MASK

ACL_USER、ACL_GROUP_OBJ,ACL_GROUP的最大权限

ACL_OTHER

其他组的权限

设置ACL的命令是setfacl,-m选项表示修改acl规则:

使用方式是# setfacl  -m {u|g}:{user|group}:rwx file

u表示设置ACL_USER的权限,g表示修改ACL_GROUP的权限

查看当前test文件的属性:

[root@racdg tmp]# getfacl test

# file: test

# owner: root

# group: root

user::rw-

group::r--

other::r—

现在将文件的读、写、执行权限授予Oracle用户,同时不修改该文件的属主、属组。

[root@racdg tmp]# setfacl -m u:oracle:rwx test

[root@racdg tmp]# ll

-rw-rwxr--+ 1 root root    8 Dec 28 13:36 test

[root@racdg tmp]# getfacl test

# file: test

# owner: root

# group: root

user::rw-                    //ACL_USER_OBJ

user:oracle:rwx             //ACL_USER

group::r--                   //ACL_GROUP

mask::rwx                    //ACL_MASK

other::r—                    //ACL_OTHER

这个时候oracle就可以对这个文件进行读写操作了。

可以看到,当设置ACL规则后,ls查看权限位,在权限位后增加了一个’+’号,这个也方便我们以后在判断文件权限的时候做个参考。

ACL权限删除:

[root@racdg tmp]# setfacl -x u:oracle test

[root@racdg tmp]# getfacl test

# file: test

# owner: root

# group: root

user::rw-

group::r--

mask::r--

other::r--

三应用场景

最近在客户处接到个需求,就是搭建一个sftp服务器供文件的读取和下载,但是每个用户的权限不尽相同。如图,A用户需要对fileA有读写权限,对fileB有读权限;B用户需要对fileB有读写权限,对fileA有读权限;而C用户需要对fileA和fileB都要有读权限。对于这个需求,我曾经尝试通过用户组的方式控制权限,但是绞尽脑汁还是满足不了需求,然后通过ACL的方式,几条命令就解决了一开始以为非常棘手的问题:

d863b4f567a8da0716e661a2bfccb998.png

[root@racdg tmp]# setfacl -R -m u:userA:rwx fileA

[root@racdg tmp]# setfacl -R -m u:userA:rx fileB

[root@racdg tmp]# setfacl -R -m u:userB:rwx fileB

[root@racdg tmp]# setfacl -R -m u:userB:rx fileA

[root@racdg tmp]# setfacl -R -m u:userC:rx fileA

[root@racdg tmp]# setfacl -R -m u:userC:rx fileB

代码编程
赞赏

相关文章

商务电子邮箱那个安全?怎么使用163邮箱最安全?
企业邮箱邮件迁移攻略,怎么把邮件同步到新注册的企业邮箱?
公司企业邮箱开通使用,收不到邮件怎么办?
邮件撤回方法详解,一键解决发错邮件的尴尬
公司邮件怎么备份?外贸企业邮箱邮件存储知识分享
春节假期怎么看公司邮箱邮件方便,好用的外贸企业邮箱推荐