AD线下主办方防搅屎之Linux权限记录
Linux权限设置三部曲:
1、chmod
2、chattr
3、setfacl
简单介绍
前面仅是铺垫,可省略
1、chmod 750 test
-rwxr-x--- 1 root l3m0n 4 Sep 1 01:15 test*
其中文件所属者为root,权限为7(rwx)
用户组为l3m0n,权限为5(r-x)
其他用户的权限为0(---)
这是我在初学的时候经常弄混的两个问题,本质还是没有彻底理解文件和目录的rwx权限存在哪些差异。
a、文件是否能被删除看的是什么权限?
曾天真以为文件具有w就是能够删除这个文件,但事实上文件的w只是能够编辑、新增、或者修改文件内容,是不包含删除文件的
真正的应该是目录的w权限,因为它表示你具有更改目录结构列表的权限,所以你能够进行增删改查
其中删除,是不管你的在这个目录下的文件权限是什么,只要目录有w权限,都可以删掉。
b、渗透过程中,经常遇到我不能cd进某个目录,但是我能够获取目录下面的文件列表。
目录的x权限是表示用户能否进入该目录成为工作目录的,也就是是否能够切换(cd)到目录下,没有x权限,目录下的二级目录也是无法访问的.
目录的r权限是表示读取目录结构列表的权限,可以通过ls列取目录文件,但是具体权限信息获取不到,只能获取到文件名
2、chattr
经常使用它来保护文件不被修改,chattr +i aaaa,即使root用户也不行。
3、setfacl
在多用户多组对情况下,文件acl是对文件权限可以做更加精准的控制
a、查看系统是否支持acl
dumpe2fs -h /dev/sda1
可以看到是支持acl的
b、getfacl、setfacl
-m 设置acl
-b 删除所有acl参数设置
acltest开始是一个640的文件,l3m0n这个用户是不能读取这个文件内容的,现在通过
setfacl -m u:l3m0n:rx acltest
将文件独特的设置l3m0n用户是有rx权限的,也可以仔细观察到权限后面多出了一个+
然后使用getfacl acltest
可以看到user::rw-,这个表示的是文件所属者(root)的权限
第二个user:l3m0n:r-x,则是针对l3m0n这个用户设置的权限
这时候可以看到即其他是无权限的,但是l3m0n用户还是可以读取文件的。
类似的还可以设置某个组的权限,比如set -m g:l3m0n:rx acltest
还有一个mask的设置,用户或组设置权限在mask范围时候会生效,最终取的是mask和当前用户权限的交集
还有一个问题就是acl是没有子目录继承的,
如果需要,则需要这样设置,前面加上d
setfacl -m d:[ug]:用户|用户组:[rwx]
找一个实际的场景来搭建一下,自己比较熟悉的就是线下AD攻防赛的环境搭建。
因为一般分为web和pwn,在资源短缺的情况下,需要将两个环境搭建在一台服务器上面。
一般的web权限为apache、pwn权限为pwn
另外需要一个账号登录SSH,权限为gamebox
这里面牵涉的几个重要的需求。
1、web、pwn权限是不能串的,不然就是pwn打进来直接弄web
2、gamebox需要对pwn和web都可以进行管理
3、gamebox对web目录进行文件覆盖的时候,会导致权限错乱
前面两个问题好解决,使用chmod、chown配置好组或者使用acl控制单独用户权限就Ok
wwwroot设置(防止pwn、www可写)
chown root:root wwwroot
chmod 775 wwwroot
web目录:
chown root:web -R web
chmod 770 -R web
麻烦的是第三个问题。也是为了增强趣味性,给选手发挥空间,一些权限不想控制的太死。apache用户进来能够对文件操控,gamebox当然也需要
但是防御方(gamebox)把web文件删除,重新上传再覆盖一次,这时候web目录下的文件权限全成为gamebox啦。导致服务很容易挂掉
可以利用有效用户组来解决这个问题,
groups,查看当前用户有哪些用户组,比如gamebox,是属于gamebox和web组
newgrp web,这样gamebox新建文件、目录时候的用户组都是为web了。这时候的权限就是gamebox:web