linux中使用ACL保护文件目录

VSole2021-09-23 08:54:09
ACl (Access Control List),主要目的是提供传统的 owner、group、others 的 read、write、execute 权限之外的特殊权限需求设置。ACL 可以针对单一使用者、单一文件或目录来进行 r、w、x 的权限规范,对于需要特殊权限的使用状况非常有帮助
ACl 主要针对以下方面来控制权限:
  • 使用者 user
  • 群组 group
  • 默认属性 mask:针对在该目录下在建立新文件/目录时,规范新数据的默认权限
有一个目录,给一堆人使用,每个人或每个群组所需要的权限并不相同,使用传统 Linux 三种身份的三种权限是无法达到的,因此基本上,传统的 Linux 权限只能针对一个用户、一个群组以及非此群组的其他人设置权限。无法针对单一用户或个人来设计权限。
Note:根据 Redhat 产品文档,它为 ext3 文件系统和 NFS 导出文件系统提供 ACL 支持。

如何检查 Linux 系统中的 ACL 支持

在继续之前,你应该在当前内核和挂载的文件系统上支持 ACL。

1. 检查内核是否支持 ACL

运行以下命令检查文件系统的 ACL 支持和 POSIX_ACL=Y 选项(如果有 N 代替 Y,则表示内核不支持ACL,需要重新编译)。
[root@linux ~]# grep -i acl /boot/config*

CONFIG_`EXT4_FS_POSIX_ACL=y`
CONFIG_`REISERFS_FS_POSIX_ACL=y`
CONFIG_JFS_POSIX_ACL=y
CONFIG_XFS_POSIX_ACL=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
CONFIG_GENERIC_ACL=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFS_ACL_SUPPORT=m
CONFIG_CIFS_ACL=y
CONFIG_9P_FS_POSIX_ACL=y

2.检查所需的包

在开始使用 ACL 之前,请确保你已安装所需的软件包。以下是需要使用安装的必需软件包yum 或者 apt-get.
[root@linux ~]# yum install nfs4-acl-tools acl libacl  [on `RedHat` based systems]
[rumenz@linux ~]$ sudo apt-get install nfs4-acl-tools acl [on `Debian` based systems]

3. 检查挂载的文件系统是否支持 ACL

现在,检查挂载的文件系统是否使用 ACL 选项挂载。我们可以用mount 用于检查相同的命令,如下所示。
[root@linux ~]# mount  | grep -i root
/dev/mapper/fedora-root on / type ext4 (rw,relatime,data=ordered)
但在我们的例子中,它默认不显示 acl。因此,接下来我们可以选择使用 acl 选项再次重新挂载已安装的分区。但是,在继续之前,我们有另一个选项来确保分区是否使用 acl 选项挂载,因为对于最近的系统,它可能与默认挂载选项集成。
[root@linux ~]# tune2fs -l /dev/mapper/fedora-root | grep acl
Default mount options:    user_xattr acl
在上面的输出中,你可以看到默认挂载选项已经支持 acl。另一种选择是重新挂载分区,如下所示。
[root@linux ~]# mount -o remount,acl /
接下来,将以下条目添加到/etc/fstab文件中以使其永久化。
/dev/mapper/fedora-root / ext4    defaults,acl 1 1
再次,重新挂载分区。
[root@linux ~]# mount -o remount  /

4.对于NFS服务器

在 NFS 服务器上,如果 NSF 服务器导出的文件系统支持 ACL,并且 NFS 客户端可以读取 ACL,那么客户端系统就会使用 ACL。
要禁用 NFS 共享上的 ACL,你必须添加选项no_acl 在 /etc/exportfs NFS 服务器上的文件。要再次在 NSF 客户端禁用它,请使用no_acl 挂载时间的选项。

如何在 Linux 系统中实现 ACL 支持

有两种类型 ACLs
  1. Access ACLs:访问 ACL 用于授予对任何文件或目录的权限。
  2. Default ACLs:默认 ACL 仅用于在特定目录上授予/设置访问控制列表。
访问 ACL 和默认 ACL 的区别:
  1. 默认 ACL 只能在目录级别使用。
  2. 在该目录中创建的任何子目录或文件都将从其父目录继承 ACL。另一方面,文件继承默认 ACL 作为其访问 ACL。
  3. 我们利用 –d用于设置默认 ACL,默认 ACL 是可选的。
设置默认 ACL 之前
要确定特定文件或目录的默认 ACL,请使用 getfacl 命令。在下面的例子中,getfacl 用于获取文件夹的默认 ACL Music
[root@linux ~]# getfacl Music/

# file: Music/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::rw-
设置默认 ACL 后
要为特定文件或目录设置默认 ACL,请使用 setfacl 命令。在下面的例子中,setfacl 命令将设置一个新的 ACL(read 和 execute) 给文件夹 Music.
[root@linux ~]# setfacl -m d:o:rx Music/
[root@linux ~]# getfacl Music/
# file: Music/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
`default:user::rwx
default:group::r-x
default:other::r-x`

如何设置新的 ACL

使用 setfacl用于设置或修改任何文件或目录的命令。例如,rumenz1用户赋予read和 write 的权限。
# setfacl -m u:rumenz1:rw /rumenz1/example

如何查看 ACL

使用 getfacl 用于查看任何文件或目录上的 ACL 的命令。例如,要查看 上的 ACL/rumenz1/example 使用下面的命令。
# getfacl /rumenz1/example

# file: rumenz1/example/
# owner: rumenz1
# group: rumenz1
user::rwx
user:rumenz1:rwx
user:rumenz2:r--
group::rwx
mask::rwx
other::---

如何删除 ACL

为了从任何文件/目录中删除 ACL,我们使用 x 和 b 选项
# setfacl -x ACL file/directory   # remove only specified ACL from file/directory.
# setfacl -b  file/directory     #removing all ACL from file/direcoty
两个用户(rumenz1 和 rumenz2),两者都有名为的共同次要组acl。我们将创建一个所有者是rumenz1的目录, 并将该目录的 read 和 execute 授权给用户 rumenz2
Step 1: 创建两个用户并从两者中删除密码
[root@linux ~]# for user in rumenz1 rumenz2
> do
> useradd $user
> passwd -d $user
> done
Removing password for user rumenz
passwd: Success
Removing password for user rumenz
passwd: Success
Step 2: 创建一个组和用户到次要组。
[root@linux ~]# groupadd acl
[root@linux ~]# usermod -G acl rumenz1
[root@linux ~]# usermod -G acl rumenz2
Step 3:创建目录/rumenz并将所有权更改为rumenz1`.
[root@linux ~]# mkdir /rumenz1
[root@linux ~]# chown rumenz1 /rumenz1/
[root@linux ~]# ls -ld /rumenz1/

drwxr-xr-x 2 rumenz1 root 4096 Apr 17 14:46 /rumenz1/
[root@linux ~]# getfacl /rumenz1

`getfacl: Removing leading '/' from absolute path names`
# file: rumenz1
# owner: rumenz1
# group: root
user::rwx
group::r-x
other::r-x
Step 4: 登录 rumenz1 并在其中创建一个目录。
[rumenz@linux ~]$ su - rumenz1

Last login: Thu Apr 17 14:49:16 IST 2014 on pts/4
[rumenz1@linux ~]$ cd /rumenz1/
[rumenz1@linux rumenz1]$ mkdir example
[rumenz1@linux rumenz1]$ ll

total 4
drwxrwxr-x 2 rumenz1 rumenz1 4096 Apr 17 14:50 example
[rumenz1@linux rumenz1]$ whoami 
rumenz1
Step 5: 现在使用设置ACLsetfacl, rumenz1 将拥有所有 rwx 权限,rumenz2 将只有 read 的权限,example 文件夹和其他文件夹将没有权限。
$ setfacl -m u:rumenz1:rwx example/
$ setfacl -m u:rumenz2:r-- example/
$ setfacl -m  other:--- example/
$ getfacl example/

# file: example
# owner: rumenz1
# group: rumenz1
user::rwx
user:rumenz1:rwx
user:rumenz2:r--
group::r-x
mask::rwx
other::---
Step 6: rumenz2 在另一个终端上并将目录更改为 /rumenz1。现在尝试使用ls命令 查看内容,然后尝试更改目录并查看如下差异。
[rumenz@linux ~]$ su - rumenz2

Last login: Thu Apr 17 15:03:31 IST 2014 on pts/5
[rumenz2@linux ~]$ cd /rumenz1/
[rumenz2@linux rumenz1]$ ls -lR example/
example/:
total 0
[rumenz2@linux rumenz1]$ cd example/

-bash: cd: example/: Permission denied
[rumenz2@linux rumenz1]$ getfacl example/

# file: example
# owner: rumenz1
# group: rumenz1
user::rwx
user:rumenz1:rwx
user:rumenz2:r--
group::rwx
mask::rwx
other::---
Step 7: 现在给 execute许可rumenz2 在 example 文件夹,然后使用 cd 命令查看效果。现在 rumenz2 具有查看和更改目录的权限,但没有写入任何内容的权限。
[rumenz1@linux rumenz1]$ setfacl -m u:rumenz2:r-x example/
[rumenz1@linux rumenz1]$ getfacl example/

# file: example
# owner: rumenz1
# group: rumenz1
user::rwx
user:rumenz1:rwx
user:rumenz2:r-x
group::rwx
mask::rwx
other::---
[rumenz@linux ~]$ su - rumenz2

Last login: Thu Apr 17 15:09:49 IST 2014 on pts/5
[rumenz2@linux ~]$ cd /rumenz1/
[rumenz2@linux rumenz1]$ cd example/
[rumenz2@linux example]$ getfacl .
[rumenz2@linux example]$ mkdir test

mkdir: cannot create directory test: Permission denied
[rumenz2@linux example]$ touch test

touch: cannot touch test: Permission denied
Note: 执行 ACL 后,你将看到一个额外的 + 符号为 ls –l 输出如下。
[root@linux rumenz1]# ll

total 4
drwxrwx---+ 2 rumenz1 rumenz1 4096 Apr 17 17:01 example
文件目录acl
本作品采用《CC 协议》,转载必须注明作者和本文链接
ACL保护文件目录
2021-09-24 08:29:06
ACl (Access Control List),主要目的是提供传统的 owner、group、others 的 read、write、execute 权限之外的特殊权限需求设置。
ACl (Access Control List),主要目的是提供传统的 owner、group、others 的 read、write、execute 权限之外的特殊权限需求设置。ACL 可以针对单一使用者、单一文件或目录来进行 r、w、x 的权限规范,对于需要特殊权限的使用状况非常有帮助
本文主要对国内主流的阿里云Bucket劫持利用姿势进行总结,漏洞原理在《劫持亚马逊S3 Bucket》一文中已经分析的很透彻了,这里就不再赘述,链接如下:
HTTP走私及变体总结
2022-09-01 22:12:58
HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式,用以绕过安全控制并获得未经授权的访问,执行恶意活动。Content-Length比实际消息长度长,请求将无响应直到超时。Transfer-Encoding: chunked代表数据以一系列分块的形式进行发送.。Content-Length 首部在这种情况下应该不被发送。在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息。这个攻击者便成功的利用了http请求走私漏洞。
vm单独添加一个网卡用来进行域环境隔离。机器配置:windows
WebLogic是由美国Oracle公司出品的一application server,准确的说就是一个基于JAVAEE而开发的一个中间件,类似Tomcat,WebLogic是一个用于开发,集成,部署与管理大型分布式Web应用,网络应用和数据库的java应用服务器。将java动态功能与java Enterprise标准的安全性引入大型网络应用的开发,集成,部署与管理之中。
目录扫描可以让我们发现这个网站存在多少个目录,多少个页面,探索出网站的整体结构。通过目录扫描我们还能扫描敏感文件,后台文件,数据库文件,和信息泄漏文件等等 目录扫描有两种方式: •使用目录字典进行暴力才接存在该目录或文件返回200或者403;•使用爬虫爬行主页上的所有链接,对每个链接进行再次爬行,收集这个域名下的所有链接,然后总结出需要的信息。
大意就是这不一定是完整的代码,请大家fck 微软。windows_research_kernel目录: 这个目录下有两个压缩包,一个是Windows Kernel Source Code like,一个是wrktools。接下来是 microsoft-gaming-zone和 misc_microsoft_gamedev_source_code两个跟游戏开发有关的源码包。包括在’’是截至2020-08-21的最新版本。然后是Windows 2000 Native API ,里面有C语言的示例及原始API代码。,XP的源码,收集的人卖了个关子,加了密,要自己破解。Pdf目录: 搜集的一些文档,比如2017年win10泄露32T源码事件等。Xbox目录 三个文件如下,可以看到最下面的是一个2020年5月刚泄露的版本。
Linux常用命令总结
2021-11-20 05:45:17
系统信息 关机网卡命令 文件目录 find命令 ps命令 防火墙命令 用户命令 其他命令 最近再使用Linux感觉Linux系统使用起来也挺顺手的不过就是命令掌握的并不是很牢固,今天整理一下Linux一些常用命令。
VSole
网络安全专家