Linux下如何设置权限让用户只删除自己的文件(粘滞位)

之前我们知道如何针对用户和用户组来设置文件权限。通常是用三个八进制来设置权限的,这里我要说的是,其实是由四个八进制表示的。其中第一个八进制我们通常是忽略的。第二个到第四个是对应于SUID,SGID,sticky-bit。

SUID:设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了
SGID : 设置了SUID 位的文件被执行时,该文件将以具有所属组的特权
sticky-bit: sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源。该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。

SUID和SGID可以对文件的权限进行设置,比如rwx(可读可写可执行)

我们引入了chmod来修改文件权限,举例如下:

linux下文件类型

当我们要修改成user为可写,group为可写时,命令如下:

chmod u+w,g+w myfife

那么操作这些标志的权限是什么呢。和文件权限是一样的,都是用chmod来修改权限的。

这里写图片描述

chmod u+s myfife:为用户设置s权限,具有文件所有者的权限

chmod g+s Code:为用户组设置s权限,具有用户组的权限,可以对该目录下的文件执行权利,Code为目录

chmod o+t myfife:为其他用户设置t权限,说明其他用户不能对其进行删除操作

这里写图片描述

大家有没有看到myfife文件中的T呢,这是因为我们给sticky位设置了权限,这个有什么作用呢?就是为了防止删除。我们有时候会遇到A用户对其有写权限,写了之后,B用户觉得那个文件没用,就把文件给删了。这样的结果可想而知……

为了避免上述的事情发生,所以就有粘滞位的引入。就是为了防止other用户对其删除。只有用户自己可以对其添加、修改、删除等操作。


使用chmod 1777 myfife 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382749.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vim简单配置

vim配置: (在Centos6.5下配置vim) 1.找到用户的主工作目录,ls看是否有.vimrc文件,有的话打开即可。没有的话自己touch一个。vim进入.vimrc中: set nu 设置行数 colorscheme desert syntax enabl…

[WPS笔试题]实现栈的push,pop,max且时间复杂度为O(1)

今天做了一下WPS的笔试题,遇到了一道关于栈的题,觉得挺有意思的,就写篇博客分享一下吧~~ 题目要求:要求实现栈的数据结构,在该类型中实现一个能够得到栈的最大元素的max函数,在该栈中,调用max,…

[剑指Offer]替换空格

今天看题的时候,遇到一个替换空格的题目,分析一下哈。 题目要求:把字符串中的每个空格替换成“%20”。例如输入“we are happy”,则输出“we%20are%20happy”。 解题思路:我们首先想到的是:移位思想。遇到…

C语言关键字 ISO/ANSI C90 C99 C11

面试考点 https://blog.csdn.net/csdn_kou/article/details/81113215 * 有的常用的我们都不知道是关键字,比如sizeof.这是面试中的考点,要注意。 * 同时当回答C语言中有多少关键字时,要回答前题条件,时针对哪一个版本

关于sudo

之前,我们使用sudo的时候,是因为其用户本身具有root权限,所以可以sudo后执行相关操作,但是对于普通用户来说,它是既不具有sudo权限,又不在sudo用户组中,那么我们来研究一下如何将新创建的用户添…

Bash入门

Bash简介: Bash(GNU Bourne-Again Shell)是一个为GNU计划编写的Unix shell,它是许多Linux平台默认使用的shell。 shell是一个命令解释器,是介于操作系统内核与用户之间的一个绝缘层。准确地说,它也是能力…

线程之售票系统pthread_mutex,_lock,_unlock

先看一下这篇文章 https://blog.csdn.net/csdn_kou/article/details/81148268 四个人同时买票票,引出线程 #include "head.h" int ticket 100; void * route(void *arg) {char *id (char *)arg;while(1){if(ticket>0){usleep(1000);printf("…

Bash基本语法

1. 变量赋值 a375 hello$a 这里需要注意的是,等号两边不能有空格 还有一个例子是这样的 例1: 结果为: 关于上述,主要有如下几点: $hello和${hello}是一样的,在bash中如果遇到空格,tab键时&a…

关于fd和fp(fd:file descirptor fp:file pointor)

通常,我们在输入数据或输出数据的设备为键盘或者显示器。当然,我们比较熟悉的输入输出,可能就是对于文件的操作,还有直接从终端输出,显示到显示器上。在C语言中,我们使用fopen,fclose,fread,fwrite对文件进…

[linux]wait详解

wait:进程等待 主要有两种等待方式:阻塞式等待和非阻塞式等待 阻塞式等待:如果子进程正在运行,父进程将会一直等待着子进程运行结束,并且自己什么事都不干 非阻塞式等待:如果子进程正在运行,…

[Linux]消息队列

我们知道进程间通信的方法有多种,主要有管道,消息队列,信号量,共享内存,socket等。之前介绍过管道,今天再介绍一个新的概念–消息队列。 消息队列:将一个进程到另一个进程之间发送数据块的方式…

C++关键字速查手册

[TOC] https://blog.csdn.net/csdn_kou/article/details/81113215 C98关键字 C11 关键字共73个 alignas alignof用于获取取指定表达式指定的(类似sizeof,可以直接是类型名)的对齐(alignment)。alignas用于声明时指定对齐类似于现有的类型…

[Linux]信号

Linux下的信号是一个什么概念呢。我们在现实生活中也遇到过信号之类的。比如红绿信号灯,班主任叫你去办公室并且脸色不好,诸如此类的都会给你一个信号。让你辨别事情的发生。同样,Linux下也有许多的信号,让你执行相应的操作。比如…

[数据结构]Map和Set

说起map和set,想必我们都学过红黑树了吧,map和set就是红黑树的一个应用领域。它的底层就是由红黑树来实现的。下面简单说一下map和set的使用吧。 首先,有一个栗子是这样的,让我们统计出每种水果出现的次数。 我们会想到怎么解决…

linux之信号

信号:在生活中,我们遇到过不同种类的信号,比如:(交通信号,乃至某个人的表情,动作等带给你不同的信号)然而,在我们的linux下,我们最熟悉的就是,当遇…

[Linux]继续探究mysleep函数(竞态条件)

之前我们探究过mysleep的简单用法&#xff0c;我们实现的代码是这样的&#xff1a; #include<stdio.h> #include<signal.h>void myhandler(int sig) {}unsigned int mysleep(unsigned int timeout) {struct sigaction act,oact;act.sa_handler myhandler;sigempt…

[Linux]死锁

死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局&#xff0c;当进程处于这种僵持状态时&#xff0c;若无外力作用&#xff0c;它们都将无法再向前推进。之前信号量的时候我们知道&#xff0c;如果多个进程等待&#xff0c;主要体现在占有锁的问题上。死锁也可以被定义…

[Linux]线程安全和可重入函数

线程安全&#xff1a;一个函数被称为线程安全的&#xff0c;当且仅当被多个并发进程反复调用时&#xff0c;它会一直产生正确的结果。如果一个函数不是线程安全的&#xff0c;我们就说它是线程不安全的。 重入&#xff1a;函数被不同的控制流程调用,有可能在第一次调用还没返回…

[Linux]信号量

信号量是一个计数器&#xff0c;用于为多个进程提供对共享数据对象的访问。 在信号量上只有三种操作可以进行&#xff0c;初始化、递增和增加&#xff0c;这三种操作都是原子操作。递减操作可以用于阻塞一个进程&#xff0c;增加操作用于解除阻塞一个进程。 为了获得共享资源…