当前位置: 首页 > Linux

linux下,普通用户只能对某个目录进行写操作

时间:2023-04-07 00:24:03 Linux

今天老婆问我一个问题:linux下如何实现某个目录。普通用户可以写入文件,但不能删除或修改(只能由root删除或修改)。前两分钟,我初步判断这是不可能的,因为在linux下能写(w)就意味着能同时修改和删除,命题自相矛盾。后来想到了stickybits和facl,还好我没有放弃,最后想到了怎么实现这个效果。下面是实验过程。首先创建一个实验目录[root@node1data]#pwd/data[root@node1data]#mkdirsample然后我们设置目录的组和权限#修改示例目录的组[root@node1data]#chown-Rroot:rootsample#修改sample目录的权限,让组和用户都没有任何权限,也就是说#只有root可以#1.进入这个目录#2.向这个目录写入文件#3.修改或删除该目录下的文件#4.执行该目录下的文件#其他组和用户不能做任何事情[root@node1data]#chmod700sample[root@node1data]#[root@node1data]#lltotal0drwx------2rootroot6Apr2012:14sample完成上述步骤后,普通用户无法进入sample目录,也无法修改或执行sample目录下的文件。如果有程序可以往这个目录下添加文件,那么我们就使用stickybit来提升普通用户的权限,保证普通用户可以使用该程序。程序需要自己写。这里我们直接用mv代替进行实验。为了不影响系统,我们这里改名为add[root@node1data]#cp/usr/bin/mv/usr/bin/add#为add添加stickybit,方便??其他用户升级到使用add时需要root权限,root可以将文件写入示例目录[root@node1data]#chmodu+s/usr/bin/add[root@node1data]#ll/usr/bin/add-rwsr-xr-X。1rootroot130344Nov62016/usr/bin/add好了,最后我们切换到普通用户进行检查。看看是否可以检查、修改和删除目录(通过mv),看看是否可以通过add(提升到root)向示例目录添加文件。#切换到普通用户,比如kafka,创建文件[kafka@node1~]$touchfile[kafka@node1~]$lltotal0-rw-rw-r--1kafkakafka0Apr2012:28file#通过mv添加文件到sample目录失败,因为普通用户没有权限写入[kafka@node1~]$mvfile/data/sample/mv:cannotstat'/data/sample/file':Permissiondenied#通过applicationadd将文件添加到sample目录,执行成功。因为执行的时候会临时提升权限到root[kafka@node1~]$addfile/data/sample/#查看删除也失败[kafka@node1~]$ll/data/sample/ls:cannotopendirectory/data/sample/:权限被拒绝[kafka@node1~]$rm-f/data/sample/filerm:无法删除'/data/sample/file':权限被拒绝