资讯专栏INFORMATION COLUMN

Linux 下实现普通用户只能写入某个目录

wpw / 1634人阅读

摘要:后面我又想到粘滞位和,幸好没有放弃,最后还是想到如何做到这个效果。如果有一个程序能够向该目录添加文件,那我们就通过粘滞位来提升一下普通用户的权限,并保证该程序对普通用户可用。

今天老婆问了我一个问题:如何在linux 下实现某个目录普通用户能够写入文件,但是不能删除或修改(只能由root 删除或修改)。开始的两分钟里,我初步判断这是做不到的,因为linux 下能 写入(w) 就代表着同时能 修改删除,命题是矛盾的。后面我又想到 粘滞位和 facl,幸好没有放弃,最后还是想到如何做到这个效果。下面是实验过程

首先起个目录用来做实验

[root@node1 data]# pwd
/data

[root@node1 data]# mkdir sample

接着我们设置好目录的属组和权限

# 修改 sample 目录属组
[root@node1 data]# chown -R root:root sample

# 修改 sample 目录权限,让组和用户都没有任何权限,也就是说
# 只有 root 能
# 1. 进入该目录
# 2. 向该目录写入文件
# 3. 修改或删除该目录中的文件
# 4. 执行该目录中的文件
# 其他组和用户什么都干不了
[root@node1 data]# chmod 700 sample
[root@node1 data]# 
[root@node1 data]# ll
total 0
drwx------ 2 root    root    6 Apr 20 12:14 sample

做完上面一步,普通用户是不能向进入 sample 目录,也不能修改或执行 sample 目录中的文件。如果有一个程序能够向该目录添加文件,那我们就通过粘滞位来提升一下普通用户的权限,并保证该程序对普通用户可用。程序需要自己编写,这里为了实验就直接用 mv 来替代,为了不影响系统,这里换了个名字叫 add

[root@node1 data]# cp /usr/bin/mv /usr/bin/add

# 给 add 添加粘滞位,这样,其他用户使用 add 的时候就能提升为 root 权限,而 root 可以向 sample 目录写入文件
[root@node1 data]# chmod u+s /usr/bin/add
[root@node1 data]# ll /usr/bin/add
-rwsr-xr-x. 1 root root 130344 Nov  6  2016 /usr/bin/add

好了,到最后了,我们切换到普通用户,进行检验。看看对该目录的查改删是不是都可以(通过mv),看看通过 add(提升为root) 能不能向 sample 目录添加文件。

# 切到普通用户,如 kafka,创建一个文件
[kafka@node1 ~]$ touch file
[kafka@node1 ~]$ ll
total 0
-rw-rw-r-- 1 kafka kafka 0 Apr 20 12:28 file


# 通过mv 添加文件到 sample 目录,失败了,因为普通用户没有权限写入
[kafka@node1 ~]$ mv file /data/sample/
mv: cannot stat ‘/data/sample/file’: Permission denied

# 通过应用程序 add 添加文件到 sample 目录,执行成功了。因为执行时,权限会临时提升为 root
[kafka@node1 ~]$ add file /data/sample/

# 查看和删除也都失败了
[kafka@node1 ~]$ ll /data/sample/
ls: cannot open directory /data/sample/: Permission denied
[kafka@node1 ~]$ rm -f /data/sample/file
rm: cannot remove ‘/data/sample/file’: Permission denied

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/10611.html

相关文章

  • Linux常用命令(一)基本格式、文件处理和文件搜索命令、链接

    摘要:生成链接文件命令原文件目标文件选项创建软链接硬链接特征拥有相同的节点和存储块,可以看做是同一个文件。当删除原文件或硬链接文件的任何一文件,不影响文件索引操作。 参考课程视频:Linux达人养成计划 I showImg(https://segmentfault.com/img/bVUIfG?w=615&h=259); 一、命令基本格式 1.1 起始符/命令提示符 [root@local...

    zhangxiangliang 评论0 收藏0
  • Linux初级命令

    摘要:第列表示该文件的所属组。表示该文件为套接字文件,用于进程间同信。所以目录的权限代表的含义为,普通文件的权限为,的值是可以自定义的,比如设定为,在创建目录或者文件时,默认权限分别为和。 cd命令 cd切换目录:cd +目标目录 当前目录:. 上一级目录:.. 返回家目录:cd ~/cd 空格 切换到上次所在目录:cd - 打印当前用户名字:whomi 打印当前用户的用户编号和用户组编...

    Snailclimb 评论0 收藏0
  • Linux - 安全 - 权限管理

    摘要:对文件赋予最高权限更改属主和组命令格式用户组文件名或目录名将目录的属主和组由改为加表示将目录及其子目录下的所有文件的属主和组都修改为设置权限掩码命令权限掩码是告诉系统当创建文件或目录时不应该赋予的权限。 吴宏东 - 记于2018年06月13日 - 博客 https://segmentfault.com/u/wu... Linux 权限管理 文件属性 属性命令 ls -l drwxr-x...

    jerry 评论0 收藏0
  • Linux - 安全 - 权限管理

    摘要:对文件赋予最高权限更改属主和组命令格式用户组文件名或目录名将目录的属主和组由改为加表示将目录及其子目录下的所有文件的属主和组都修改为设置权限掩码命令权限掩码是告诉系统当创建文件或目录时不应该赋予的权限。 吴宏东 - 记于2018年06月13日 - 博客 https://segmentfault.com/u/wu... Linux 权限管理 文件属性 属性命令 ls -l drwxr-x...

    bingchen 评论0 收藏0
  • Linux 文件系统的实现

    摘要:它存储有文件系统的相关信息,包括文件系统的类型,的数目,数据块的数目。文件是文件系统对数据的分割单元。元数据并不包含在文件的数据中,而是由操作系统维护的。数据块在并不是组织文件的唯一方式。转载自文件系统的实现作者Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件。当我们给出一个文件...

    stackfing 评论0 收藏0

发表评论

0条评论

wpw

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<