权限管理基础
[root@localhost ~]# ll
d rwxr-xr-x . 2 root root 6 5月 28 16:42 视频
[1][2] [3] [4] [5] [6] [7] [8] [9]
文件权限信息含义:
[1] 文件类型
- - 普通文件
- d 目录
- l 软连接
- b 快设备
- c 字符设备
- s socket套接字
- p 管道 |
[2] 用户权限
rwx | r-x | r-x
u g o
- - #权限未开启
- r #可读
- #对于文件:可以读取文件内容
- #对于目录:可以ls列出目录中的文件
- w #可写
- #对于文件:可以更改文件内容
- #对于目录:可以在目录中新建或者删除文件
- x #可执行
- #对于文件:可以用文件名称调用文件内记录的程序
- #对于目录:可以进入目录中
- u: #user 文件的拥有者,ls -l 看到的第五列信息
- g: #group 文件拥有组, ls -l 看到的第六列信息
- o: #other 既不是拥有者也不是拥有组成员的其他用户的通称
[3] 系统的selinux开启
[4]
- 对于文件:文件内容被系统记录的次数(硬链接个数)
- 对于目录:目录中子目录的个数
[5] 文件拥有者
[6] 文件拥有组
[7]
- 对于文件:文件内容大小
- 对于目录:目录中子文件的元数据大小
[8] 文件内容被修改的时间
[9] 文件名称
系统默认权限设定:
-
umask 的作用
- umask #表示系统保留权限:
- umask #用来查看当前系统的默认权限设置
- umask 权限值 #可以临时设定系统预留的权限
- umask 值越大系统安全性越高,因为它减少了新创建文件或目录的默认权限。
- umask #表示系统保留权限:
-
默认权限计算
- 文件的默认权限计算公式为:777 - umask - 111
例如,如果 umask 设置为 022,则文件的默认权限为 777-022-111=644。 - 目录的默认权限计算公式为:777 - umask
例如,如果 umask 设置为 022,则目录的默认权限为 777-022=755。
- 文件的默认权限计算公式为:777 - umask - 111
-
umask 的临时更改与永久更改
- 临时更改 umask:
——umask 077 - 永久更改 umask:
——修改 /etc/bashrc 或 /etc/profile 文件以永久改变默认 umask 设置。 - 使更改生效:
——source /etc/bashrc
——source /etc/profile
- 临时更改 umask:
更改文件拥有者和拥有组
- 更改文件拥有者:chown username file
- 更改文件拥有组:chgrp groupname file
- 同时更改文件的拥有者和拥有组:chown username:groupname file
- 递归更改目录和其内容的拥有者:chown -R username dir
- 递归更改目录和其内容的拥有组: chgrp -R groupname dir
权限管理进阶
ACL权限列表应用
ACL(Access Control List,访问控制列表)常用于需要更精细和灵活的文件和目录权限控制的地方。它提供了比传统的基于用户或用户组的权限控制更细粒度的访问控制能力,可以根据实际需要在不同的系统和应用中灵活应用,以保证数据和资源的安全性和合规性。主要的使用场景包括:
-
文件服务器:
在企业的文件服务器上,ACL用于管理对共享文件和文件夹的访问权限。它允许管理员为特定的用户组或个别用户指定精确的读取、写入、执行或删除权限,而不仅仅局限于常规的文件系统权限(如读、写、执行)。 -
操作系统级别:
操作系统(如Linux、Windows等)中的ACL用于管理本地文件和目录的访问权限。它可以允许或拒绝用户或用户组对特定文件的特定操作。 -
网络设备:
网络设备如路由器、交换机等,有时也支持ACL来控制网络流量的访问和传输。这种ACL用于定义允许或拒绝通过设备的特定网络流量,可以根据IP地址、端口号等条件来过滤流量。 -
数据库系统:
在数据库管理系统中,ACL可以用来控制对数据库对象(表、视图、存储过程等)的访问权限。管理员可以为不同的用户或角色分配不同级别的数据访问权限,确保数据的安全性和隐私性。 -
云服务:
在云计算环境中,如AWS、Azure等云服务提供商,ACL可以用于控制对云存储桶、虚拟机实例、数据库实例等资源的访问权限。这样可以精确地定义哪些用户或实体可以访问特定的云资源。
ACL列表的开启标识
ACL列表的开启标识显示在文件或目录权限列表的最后一位。没有"+"表示ACL列表未开启,有"+"表示ACL列表功能已开启。
# ACL未开启
-rw-rw---- 1 root caiwu 0 Apr 18 09:03 westosfile
# ACL已开启
-rw-rw----+ 1 root caiwu 0 Apr 18 09:03 westosfile
ACL列表权限读取与解析
使用 getfacl
命令可以读取ACL列表的权限设定。
[root@localhost ~]# getfacl westosfile
#显示内容解析:
# file: westosfile # 文件名称
# owner: root # 文件拥有者
# group: root # 文件拥有组
user::rw- # 文件拥有者权限
user:lee:rw- # 特殊指定用户 lee 的权限
group::r-- # 文件拥有组权限
group:westos:--- # 特殊指定用户组 westos 的权限
mask::rw- # 能够赋予特殊用户和特殊用户组的最大权限阀值
other::r-- # 其他人的权限
注意:当ACL列表开启时,应使用 getfacl
命令而不是 ls -l
来查看文件的详细权限。
ACL列表的控制操作
-
设定ACL列表权限:
-
setfacl -m u:lee:rw westosfile # 给用户 lee 分配读写权限 setfacl -m g:westos:rw westosfile # 给组 westos 分配读写权限
-
删除ACL列表中的权限设定:
-
setfacl -x u:lee westosfile # 删除用户 lee 的权限设定
-
关闭ACL列表:
-
setfacl -b westosfile # 关闭 westosfile 的ACL列表
ACL权限优先级
ACL权限的优先级如下:
- 文件拥有者权限 > 特殊指定用户权限 > 权限多的组 > 权限少的组 > 其他
ACL Mask控制
ACL Mask 是能够赋予特殊用户和特殊用户组的最大权限阀值。
-
当使用
chmod
改变文件或目录的组权限时,ACL Mask 会相应地调整以保持一致性。 -
恢复ACL Mask 到正确的设置:
-
setfacl -m m:权限 westosfile
ACL列表的默认权限
-
设定仅对目录本身生效:
-
setfacl -m u:lee:rwx /mnt/westosdir
-
递归设定目录及其现有内容:
-
setfacl -Rm u:lee:rwx /mnt/westosdir
-
设定新建文件的默认权限:
-
setfacl -m d:u:lee:rwx /mnt/westosdir/