android网站开发实例,上海松江做网站建设,知名企业招聘信息,做影视网站风险大今天老婆问了我一个问题#xff1a;如何在linux 下实现某个目录普通用户能够写入文件#xff0c;但是不能删除或修改#xff08;只能由root 删除或修改#xff09;。开始的两分钟里#xff0c;我初步判断这是做不到的#xff0c;因为linux 下能 写入#xff08;w#x… 今天老婆问了我一个问题如何在linux 下实现某个目录普通用户能够写入文件但是不能删除或修改只能由root 删除或修改。开始的两分钟里我初步判断这是做不到的因为linux 下能 写入w 就代表着同时能 修改 和 删除命题是矛盾的。后面我又想到 粘滞位和 facl幸好没有放弃最后还是想到如何做到这个效果。下面是实验过程 首先起个目录用来做实验 [rootnode1 data]# pwd
/data[rootnode1 data]# mkdir sample 接着我们设置好目录的属组和权限
# 修改 sample 目录属组
[rootnode1 data]# chown -R root:root sample# 修改 sample 目录权限让组和用户都没有任何权限也就是说
# 只有 root 能
# 1. 进入该目录
# 2. 向该目录写入文件
# 3. 修改或删除该目录中的文件
# 4. 执行该目录中的文件
# 其他组和用户什么都干不了
[rootnode1 data]# chmod 700 sample
[rootnode1 data]#
[rootnode1 data]# ll
total 0
drwx------ 2 root root 6 Apr 20 12:14 sample 做完上面一步普通用户是不能向进入 sample 目录也不能修改或执行 sample 目录中的文件。如果有一个程序能够向该目录添加文件那我们就通过粘滞位来提升一下普通用户的权限并保证该程序对普通用户可用。程序需要自己编写这里为了实验就直接用 mv 来替代为了不影响系统这里换了个名字叫 add [rootnode1 data]# cp /usr/bin/mv /usr/bin/add# 给 add 添加粘滞位这样其他用户使用 add 的时候就能提升为 root 权限而 root 可以向 sample 目录写入文件
[rootnode1 data]# chmod us /usr/bin/add
[rootnode1 data]# ll /usr/bin/add
-rwsr-xr-x. 1 root root 130344 Nov 6 2016 /usr/bin/add 好了到最后了我们切换到普通用户进行检验。看看对该目录的查改删是不是都可以通过mv看看通过 add(提升为root) 能不能向 sample 目录添加文件。 # 切到普通用户如 kafka创建一个文件
[kafkanode1 ~]$ touch file
[kafkanode1 ~]$ ll
total 0
-rw-rw-r-- 1 kafka kafka 0 Apr 20 12:28 file# 通过mv 添加文件到 sample 目录失败了因为普通用户没有权限写入
[kafkanode1 ~]$ mv file /data/sample/
mv: cannot stat ‘/data/sample/file’: Permission denied# 通过应用程序 add 添加文件到 sample 目录执行成功了。因为执行时权限会临时提升为 root
[kafkanode1 ~]$ add file /data/sample/# 查看和删除也都失败了
[kafkanode1 ~]$ ll /data/sample/
ls: cannot open directory /data/sample/: Permission denied
[kafkanode1 ~]$ rm -f /data/sample/file
rm: cannot remove ‘/data/sample/file’: Permission denied