Linux上文件的特殊权限SUID,SGID,SBIT详解

 大家都知道文件和目录的权限最常见的有三个.可读(r)..可写(w)..可执行(x)..它们的级别分别是4..2..1..我们有时也会发现有些文件所属主的权限上带有一个s的标志位.目录的所属组上也带有s标志位.很多人不理解这是为什么....下面我们举例来看一下...
         #ls -l  /usr/bin/passwd
         -rwsr-xr-x 1 root root 19876 Jul 17  2006 /usr/bin/passwd
         这个文件的所属主的x标志位上变成了s,这时称为set uid ..简写就是suid..其实这个文件属性也没有特殊的含义..当这个s标志位出现在一些脚本上时,它就有意义了...比方说我我们有一个脚本名为sum.sh.这个脚本的权限如下:
        -rwsrwxr-x 1 root root   117 Feb  6 20:46 sum.sh
         这个脚本的所属主和所属组为root.我们当然可以以root的用户的身份执行它..我们还可以看见它的所属主的标志位上有个s..其他人有读取和执行的权限.假如我们现在有个普通用户名为redhat..现在切换到redhat..执行此脚本..表面上我们看是执行成功了..其实我们是借助root用户的身份来执行它..而不是redhat..这就是suid的特性....
        下满我们来说下SGID,看了上面的SUID后很容易就知道所谓SGID就是将标志s加到gid的x标志位上..称为set gid.简称sgid..在这强调一下SUID我们一般用在文件上.特别是一些脚本上...SGID用在目录上最多...比方说我以root身份创建一个目录a.给他加上sgid权限
        #mkdir a
        #chmod   2757  a
        #ls  -l
          drwxr-srwx 2 root root  4096 Feb  6 21:09  a
        因为我们给a目录其他人所具有的权限是可读,可写,可执行...当我们以redhat用户的身份切换到另外一个终端..进入a目录中,我们在此目录中创建一个目录b和一个文件c
        [redhat@station18 a]$ mkdir b
        [redhat@station18 a]$ touch c
        [redhat@station18 a]$ ls -l
        drwxrwsr-x 2 redhat root 4096 Feb  6 21:20 b
        -rw-rw-r-- 1    redhat root    0 Feb  6 21:20 c
        我们可以看到目录b和文件c的所属组都为root......当你将一个a目录置为sgid权限时候,如果其他人有读取,执行和写入的权限时,别人在此目录中创建的任何文件和目录的所属组都为a目录的所属组..但所属主还是自己...这个会经常的用到....有一点大家得注意...就是任何人在a目录中创建的东西.别人都可以删掉...这就是我们下面要讲到的SBIT....
        SBIT 全称Sticky Bit.但是它只对目录有效,对文件却是无效的,它的作用就是防止别人删除对方的资料...我们举例来说明...
      1..我用root用户登录创建一个目录名为test
       [root@station18 ~]# mkdir test
       [root@station18 ~]# chmod o+w test/
       [root@station18 ~]# ls -l
       drwxr-xrwx 2 root root  4096 Feb  6 21:30 test
      2..我们切换到redhat用户登录一个终端,创建一个目录a..
       [redhat@station18 test]$ mkdir a
      3.我们在切换到xiaoming用户登录一个终端,创建一个目录b...
       [xiaoming@station18 test]$ mkdir b
       [xiaoming@station18 test]$ ls  -l
       drwxrwxr-x 2 redhat   redhat   4096 Feb  6 21:32 a
       drwxrwxr-x 2 xiaoming xiaoming 4096 Feb  6 21:31 b
       我们可以以任何用户的身份进入test目录发现可以删除a和b目录...这样就乱了套...别人的目录你岂能随便删的...这时我们就需要将test目录加上SBIT权限了...
       [root@station18 ~]# chmod  1757  test/
       [root@station18 ~]# ls -l
       drwxr-xrwt 4 root root  4096 Feb  6 21:42 test
       我们在用别的用户登录进入test目录他就删不掉别人的资料了,系统会提示rm: cannot remove directory `a': Operation not permitted..意思是你权限不够....呵呵...这样别人就没辙了....我测试过成功的...
       下面我来说一下关于SUID SGID  SBIT权限的设定...
        SUID为4
        SGID为2
        SBIT为1
        我在上面设定一些文件或目录的权限你可能看不懂,,下面我来详细讲解...
        假如我们有个文件叫file.有一个目录叫test..file它的权限是644..test的权限是755
        1..如果我们想把file加上suid权限的话执行此命令
        #chmod  4755  file
        2..如果我们想把test目录加上sgid的话执行此命令
        #chmod  2755   test/
        3.如果我们想把test目录加上sbit权限的话执行此命令
        #chmod  1755   test/
        4..大家可以看得出来s与t都是取代x权限的...
        5..如果不想让test具备SUID和SGID权限执行此命令
        #chmod   7666  file
        #ls  -l
         -rwSrwSrwT 1 root root     0 Feb  6 21:49 file
        这里的S和T就代表空..不具备其他人执行的权限...7666也就是说用户,组,以及其他的人都不具备x的权限,除了root.任何人修改不了此文件...
        这儿我用数字代替给文件加一些 权限....我们也可以用别的方法.比方说..我们给file文件加上suid权限
        #chmod  u=rwxs,o=rx   file
        给test目录加上SGID权限和other可读取写入执行权限
        #chmod  g+s,o=wrx    test/
        给test目录加上SBIT权限和other可读取写入执行权限
        #chmod   o=rwxt   test/

时间: 2024-09-20 00:57:04

Linux上文件的特殊权限SUID,SGID,SBIT详解的相关文章

Linux系统下安装rz/sz命令及使用说明(详解)_Linux

对于经常使用Linux系统的人员来说,少不了将本地的文件上传到服务器或者从服务器上下载文件到本地,rz / sz命令很方便的帮我们实现了这个功能,但是很多Linux系统初始并没有这两个命令. 今天,我们就简单的讲解一下如何安装和使用rz.sz命令. 1.软件安装 root 账号登陆后,依次执行以下命令: cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz tar zxvf lrzsz-0.12.20.tar.gz &

linux中了minerd之后的完全清理过程(详解)_Linux

一不小心装了一个Redis服务,开了一个全网的默认端口,一开始以为这台服务器没有公网ip,结果发现之后悔之莫及啊 某天发现cpu load高的出奇,发现一个minerd进程 占了大量cpu,google了一下,发现自己中招了 下面就是清理过程 第一步 1.立即停止redis服务,修改端口权限,增加密码措施 2.按照网上的资料 删除 crontab 里的两个内容 sudo rm /var/spool/cron/root sudo rm /var/spool/cron/crontabs/root 3

c# 怎样读取mobi文件或mobi格式中文文档详解

问题描述 c#怎样读取mobi文件,mobi格式中文文档详解,谁有源码或文档的,先谢过了 解决方案 解决方案二:没人回答?..解决方案三: 解决方案四:好吧我不知道--不过帮你谷歌了--网上没找到--应该是没这需求吧--mobi我记得用在了Kindle上不过应该是可以读的,因为Windows8.1上有读取这个的App,你可以逆向一下--解决方案五:https://mbc.codeplex.com/这里有demo下载看看

linux网站服务Apache的安装与配置方法详解_Linux

这篇文章介绍下linux网站服务apache的安装与配置方法,包括挂载光盘,安装http服务,管理httpd服务,httpd的配置文件几大部分.具体详情可以参考下文. 1.挂载光盘 自己习惯将光盘挂载在/media/cdrom目录,在做本地yum源的时候此目录为默认目录之一 [root@localhost /]# mount /dev/cdrom /media/cdrom/ 2.安装httpd服务(如果本地yum源已经搭建好就直接进行这一步,没有的话需要搭建,前面的文章有提到yum源的搭建) [

mysql 5.7 zip 文件在 windows下的安装教程详解_Mysql

1.下载mysql最新版本. http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.15-winx64.zip 2.解压到文件夹. D:\software\mysql\mysql5.7a 将my-default.ini 复制为 my.ini 3.编辑my.ini # These are commonly set, remove the # and set as required. basedir ="D:/software/mysql/mysql

Linux文件权限与目录管理详解_Linux

一.Linux文件系统的三种身份 1).文件所有者 2).同组用户 同一个用户组的用户可以访问该用户组的文件: 每个账号可以加入多个用户组. 在同一个用户组的文件也可以设置不同的权限,可以不让本组用户查看.3).其他人 除了文件主.同组用户以外的人就是其他人. PS: /etc/passwd 记录所有用户的账号 /etc/shadow 记录所有用户的密码 /etc/group 记录所有的组名 二.文件属性 ls -al 显示所有的文件名和相关属性(包括以.开头的隐藏文件) total 72 dr

Node.js的文件权限及读写flag详解_node.js

一.文件权限的数字类型 用数字来代表各个权限,各权限的分数对照表如下:      r: 4      w: 2      x: 1 文件的基本权限有9个,分别是owner.group.others三种身份各有自己的read.write.execute权限.例如文件的权限字符为"-rwxrwxrwx"这9个权限是三个三个一组的.每种身份(owner.group.others)各自的权限(r.w.x)分数是需要累加的. 例如,当权限为[-rwxrwx-]时,分数则是: owner = rw

linux那点事儿(四)----用户管理详解

用户管理----用户信息与密码的配置文件                                                                                                                   用户管理要学的内容很多,当然了,不会简单的放两个创建用户的命令,这样的文章太多了.我们来看两个用户管理中非常重要的配置文件吧!      我们来看看用户的相关配置文件都存放在什么地方. 用户信息文件:      /etc/pass

Linux NTP历史、参数解释、安装配置详解

1.如何查看ntp是否配置成功? 2.如何了解ntp列出的参数的含义? 3.restrict关键字的作用是什么?   贴出关键信息: # watch ntpq -p Every 2.0s: ntpq -p                                  Sat Jul  7 00:41:45 2007      remote           refid      st t when poll reach   delay   offset  jitter ==========