zoukankan      html  css  js  c++  java
  • Linux权限问题(1)-Sticky

    背景:朋友在使用php进行mv操作时,出现了权限被拒绝的问题.查看之后,发现目录设置了sticky权限,取消此权限后,文件可以正常mv及删除.

    Sticky:对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件(马哥语录,见 马哥Linux base学习笔记)

    如下图所示,这是一个加了sticky权限的目录

    # mkdir sticky_test
    # chmod 1777 sticky_test
    # ll -d sticky_test
    drwxrwxrwt. 2 root root 4096 Jun 29 17:06 sticky_test

    使用redheat用户进入sticky_test目录,touch一个文件,并对该文件添加777权限

    $ whoami 
    redheat
    $ touch redheat_file
    $ chmod 777 redheat_file 
    $ ll
    total 0
    -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:10 redheat_file

    正常来说,添加了777权限的文件,任何用户可以对其执行读,写,执行的操作

    现在使用myuser用户进入该目录,执行删除操作

    $ whoami 
    myuser
    $ ll
    total 0
    -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:10 redheat_file
    $ rm -rf redheat_file 
    rm: cannot remove `redheat_file': Operation not permitted

    可以发现,系统给出了权限被拒绝的提示.

    换回redheat用户,执行删除操作

    $ rm -rf redheat_file 
    $ ll
    total 0

    命令可以正常执行.

    再次创建该文件,并使用root用户将文件的属组更改为myuser

    # chown .myuser redheat_file 
    # ll
    total 0
    -rwxrwxrwx. 1 redheat myuser 0 Jun 29 17:18 redheat_file

    再次使用myuser用户执行删除命令

    $ ll
    total 0
    -rwxrwxrwx. 1 redheat myuser 0 Jun 29 17:18 redheat_file
    $ rm -rf redheat_file 
    rm: cannot remove `redheat_file': Operation not permitted

    仍然是不可以删除的.

    使用root用户,将目录的sticky权限去掉,同时将redheat_file文件的所属组改回redheat用户

    # chmod o-t sticky_test
    # ll -d sticky_test
    drwxrwxrwx. 2 root root 4096 Jun 29 17:18 sticky_test
    # chown redheat.redheat sticky_test/redheat_file 
    # ll sticky_test/redheat_file 
    -rwxrwxrwx. 1 redheat redheat 0 Jun 29 17:18 sticky_test/redheat_file

    使用myuser用户可以成功删除该文件

    $ rm redheat_file 
    $ ll
    total 0

    总结:当目录设置了sticky权限之后,属组或其他用户,即使对该目录下的文件拥有权限,也无法对该文件执行删除操作.

    命令:

    对目录设置777权限,同时增加sticky权限
    # chmod 1777 sticky_test
    对目录设置sticky权限
    # chmod o+t sticky_test
    删除目录sticky权限
    # chmod o-t sticky_test
  • 相关阅读:
    设计模式之-工厂方法模式
    设计模式之-简单工厂模式
    设计模式之-单例模式
    Ubuntu-18.04 下使用Nginx搭建高可用,高并发的asp.net core集群
    Ubuntu-18.04 下修改root用户密码,安装SSH服务,允许root用户远程登录,安装vsftp服务器
    ASP.NET Core 系列[1]:ASP.NET Core 初识
    .net core系列之《将.net core应用部署到Ubuntu》
    动态内存分配函数
    C++ sort()对结构体排序
    STL
  • 原文地址:https://www.cnblogs.com/redheat/p/7095611.html
Copyright © 2011-2022 走看看