文件权限除了r、w、x外还有s、t、i、a权限:

首先我们利用umask查看系统的权限为四位,首位就是特殊权限位,SetUID为4,SetGID为2,t为1

[root@iz2ze46xi6pjjj69ailg9lz ~]# umask

一、 s权限解读:  (SetUID和SetGID)

1.SetUID权限解读(针对所属主设置s权限,数字表示为4)

  SetUID:当一个可执行程序具有SetUID权限,用户执行这个程序时,将以这个程序所有者的身份执行。前提是这个文件是可执行文件,可就是具有x权限(属组必须先设置相应的x权限)。chmod命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)

  •   (1)设置权限的方法:

          chmod u+s xxx

         chmod 4777 xxx

    解释:我们利用umask知道权限的设置是四位数,后三位是ugo对应的属性,首位就是特殊位权限的表示,SetUID的权限位是4,因此可以用chmod 4777 xxx设置s权限。

  例1: linux的passwd命令就具有s权限,因此普通用户可以修改自己的密码:

[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ ls -la `which passwd`
-rwsr-xr-x. root root Jun /usr/bin/passwd

    解释:passwd的所属这是root,所属组也是root,具有s权限,因此其他用户执行passwd的时候是以passwd的所属组root执行。

  例2:将touch赋予s权限,查看其创建的文件的所属组

    (1)qlq用户touch没有被赋予s权限的时候创建一个文件(所属主是当前用户,所属组是当前用户的组:)

[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ls
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll
total
-rw-rw-r-- qlq qlq Mar : test1file

    (2)root用户将touch赋予s权限:

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod u+s `which touch`  #赋予所属主s权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`    #查看touch权限
-rwsr-xr-x. root root Nov /usr/bin/touch

    (3)qlq用户再次创建一个文件查看所属主(所属主是root,所属组是当前用户所属组)

[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file2
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll ./test1file2
-rw-rw-r-- root qlq Mar : ./test1file2
  • (2)收回s权限

chmod u-s xxx

    chmod  0777   xxx

例如:收回上面的touch的s权限之后再次创建文件:

    (1)root用户收回权限

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod  `which touch`    #收回权限
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`      #查看权限
-rwxr-xr-x. root root Nov /usr/bin/touch

      第一位为特殊权限位。因此用0就表示没有特殊权限。

    (2)qlq用户再次创建一个文件查看信息:(所属主变成当前用户)

[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll ./test1file3
-rw-rw-r-- qlq qlq Mar : ./test1file3
  • (3)查看系统具有SetUID或者GID的文件
[root@iz2ze46xi6pjjj69ailg9lz ~]# find / -perm 4755 -o -perm 2755  #跟据权限查看,-o表示or,4代表SetUID,2代表SetGID
/usr/lib/polkit-/polkit-agent-helper-
/usr/sbin/netreport
/usr/sbin/postqueue
/usr/sbin/pam_timestamp_check
/usr/sbin/unix_chkpwd
/usr/sbin/postdrop
/usr/sbin/usernetctl
/usr/bin/at
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/write
/usr/bin/su

注意:

  vim和vi不能被授予s权限,否则好多只读文件都可以被以root身份保存。

  • (4)当我们针对一个不具备x权限的文件设置s权限时无效,权限变为大写S,大写S说明s权限未生效
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ chmod u+s ./test1file
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll
total
-rwSrw-r-- qlq qlq Mar : test1file

2.SetGID解读(针对所属组设置权限,数字表示为2)

  一个可执行文件具有SetGID权限表示运行这个程序的时候是以这个程序的所属组的身份运行,同样这个文件需要具有x权限(必须可以运行)

设置权限方法

  chmod g+s xxx

  chmod 2777 xxx

收回权限方法:

  chmod g-s xxx

  chmod 0777 xxx

例1:针对上面的touch同时设置SetUID和SetGID权限之后创建文件

(1)root用户设置权限

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod  `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwsr-sr-x. root root Nov /usr/bin/touch

(2)qlq用户创建一个文件:(所属主为root,所属组是root所在的组)

[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file4
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll | grep test1file4
-rw-rw-r-- root root Mar : test1file4

例2:将touch的权限只设置SetGID并创建文件:

(1)root用户设置权限

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod  `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwxr-sr-x. root root Nov /usr/bin/touch

(2)qlq用户创建一个文件:(所属主为qlq,所属组是root所在的组)

[qlq@iz2ze46xi6pjjj69ailg9lz test]$ touch test1file5
[qlq@iz2ze46xi6pjjj69ailg9lz test]$ ll | grep test1file5
-rw-rw-r-- qlq root Mar : test1file5

例三:收回touch的SetGID权限:

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod g-s `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwxr-xr-x. root root Nov /usr/bin/touch

注意:上面的SID和GID要求用户必须有执行文件的权利,如果有执行权限执行的时候s位才会生效:

例如:

(1)root将o的x权限去掉

[root@iz2ze46xi6pjjj69ailg9lz ~]# chmod  `which touch`
[root@iz2ze46xi6pjjj69ailg9lz ~]# ll `which touch`
-rwsr-x---. root root Nov /usr/bin/touch

(2)qlq执行touch命令权限不允许:

[qlq@iz2ze46xi6pjjj69ailg9lz ~]$ touch www
-bash: /usr/bin/touch: Permission denied

二、黏着位 t  解读(针对others设置,可以实现文件夹共享)

t :设置粘着位,一般针对权限是777的文件夹设置权限。如果文件设置了t权限则只有属主和root有删除文件的权限(没有意义)

  如果权限为777的目录设置t权限,索引用户可以在这个目录下面创建文件和删除自己创建的文件,删除其他人创建的文件权限不被允许(当然root可以删除所有人创建的权限)。(为了共享目录,例如临时文件夹)

设置权限

  chmod  o+t  xxx

  chmod  1777 xxx

收回权限

  chmod o-t  xxx  

  chmod 0777 xxx

例1:linux的存放临时文件夹的tmp目录就有t权限:

[root@iz2ze46xi6pjjj69ailg9lz /]# ll / | grep tmp
drwxrwxrwt. root root Mar : tmp

例2:创建一目录并设置t权限:

(1)root用户创建目录并设置权限为777+t权限

[root@iz2ze46xi6pjjj69ailg9lz test]# chmod  /mydir/
[root@iz2ze46xi6pjjj69ailg9lz test]# ll /|grep mydir
drwxrwxrwx root root Mar : mydir
[root@iz2ze46xi6pjjj69ailg9lz test]# chmod o+t /mydir/
[root@iz2ze46xi6pjjj69ailg9lz test]# ll /|grep mydir
drwxrwxrwt root root Mar : mydir

(2)root用户在此目录下创建几个文件

[root@iz2ze46xi6pjjj69ailg9lz mydir]# touch rootfle1
[root@iz2ze46xi6pjjj69ailg9lz mydir]# touch rootfle2
[root@iz2ze46xi6pjjj69ailg9lz mydir]# ll
total
-rw-r--r-- root root Mar : rootfle1
-rw-r--r-- root root Mar : rootfle2

(3)qlq在此目录下创建文件并删除文件(可以创建文件与删除自己创建的文件,删除root创建的文件被提示不允许)

[qlq@iz2ze46xi6pjjj69ailg9lz /]$ cd /mydir/
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ touch qlqfile1
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ touch qlqfile2
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ rm rootfle1
rm: remove write-protected regular empty file ‘rootfle1’? y
rm: cannot remove ‘rootfle1’: Operation not permitted
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ rm -f qlqfile1
[qlq@iz2ze46xi6pjjj69ailg9lz mydir]$ ll
total
-rw-rw-r-- qlq qlq Mar : qlqfile2
-rw-r--r-- root root Mar : rootfle1
-rw-r--r-- root root Mar : rootfle2

三、i与a权限解读

  参考:http://www.cnblogs.com/qlqwjy/p/8358917.html

i:不可修改权限  例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。

a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限。

关于Linux下s、t、i、a权限的更多相关文章

  1. Linux下ls命令显示符号链接权限为777的探索

    Linux下ls命令显示符号链接权限为777的探索 --深入ls.链接.文件系统与权限 一.摘要 ls是Linux和Unix下最常使用的命令之一,主要用来列举目录下的文件信息,-l参数允许查看当前目录 ...

  2. Linux 下指定端口开放访问权限

    Linux 下指定端口开放访问权限 作者:Grey 原文地址: 博客园:Linux 下指定端口开放访问权限 CSDN:Linux 下指定端口开放访问权限 环境 CentOS 系和 Debian 系的防 ...

  3. Linux下报 java.net.SocketException权限不够 异常解决

    转载自:http://wangchongan.com/articles/java-net-socket-exception-permission-denied.html 今天在Linux下用Jetty ...

  4. Linux下的文件与目录权限

    一.用户(User).群组(Group)和其他人(Others) linux是多用户多任务的操作系统,同一时刻可能会有多个用户登录系统,考虑到文件的安全性等问题,所以Linux下的文件都属于一个特定的 ...

  5. Linux 下添加用户,修改权限

    最近在用虚拟机,安装了centos,现在想新添加一个用户,在网上找了找方法.[原文链接] # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为 ...

  6. Linux下mysql新建账号及权限设置各种方式总结

    来自:http://justcoding.iteye.com/blog/1941116 1.权限赋予 说明:mysql部署在服务器A上,内网上主机B通过客户端工具连接服务器A以进行数据库操作,需要服务 ...

  7. linux下创建文件的文件权限问题

    今天发现创建文件的权限和自己规定的权限不一致,了解到了权限掩码的问题,这里总结一下. 首先权限掩码umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常我们都 ...

  8. (转)Linux 下 查看以及修改文件权限

    场景:Linux环境下远程部署项目,发现因为文件权限问题,不能执行远端的可执行文件.问题还没解决,待议... 1 查看权限 在终端输入: ls -l xxx.xxx (xxx.xxx是文件名) 那么就 ...

  9. Linux下SVN部署/安全及权限配置,实现web同步更新

    转自:http://www.cnblogs.com/me115/archive/2013/04/07/3002058.html 本文包含以下内容: SVN服务器安装 SVN权限管理 SVN使用SASL ...

  10. linux 下如何给用户添加权限

    linux 添加用户.权限:# useradd –d /usr/sam -m sam此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户 ...

随机推荐

  1. C跟C++

    工作以来几乎就只写C,下周开始的新工作可能就要开始写C++啦~ C: C++: 1.template 2.多态.重载.继承 3.虚函数 C++内存布局 看两张耗子的图片就清楚了.其中虚函数表一般放在数 ...

  2. Git 应用补丁报错 “sha1 information is lacking or useless”

    因为现场代码在客户局域网内,不能连接到公司网络,所以一般更新的时候都是打补丁, 然后在客户现场应用补丁,但是最近在应用补丁的时候出现了如下问题: ... fatal: sha1 information ...

  3. Java判断数据库表是否存在的方法

    一.需求 最近在写一个程序,需要取数据库表的数据之前,需要先查看数据库是否存在该表否则就跳过该表. 二.解决方案(目前想到两种,以后遇到还会继续添加): .建立JDBC数据源,通过Java.sql.D ...

  4. 当要将其他类型转成String类型时候 看String的方法

    当要将其他类型转成String类型时候 看String的方法进行转换

  5. subprocess模块详解

    subprocess是Python与系统交互的一个库,该模块允许生成新进程,连接到它们的输入/输出/错误管道,并获取它们的返回代码. 该模块旨在替换几个较旧的模块和功能: os.system os.s ...

  6. javascript中var let const三种变量声明方式

    javascript中var let const三种变量声明方式 1.var  ①var表示声明了一个变量,并且可以同时初始化该变量. ②使用var语句声明的变量的作用域是当前执行位置的上下文:一个函 ...

  7. 2018牛客多校第四场 J.Hash Function

    题意: 给出一个已知的哈希表.求字典序最小的插入序列,哈希表不合法则输出-1. 题解: 对于哈希表的每一个不为-1的数,假如他的位置是t,令s = a[t]%n.则这个数可以被插入当且仅当第s ~ t ...

  8. 【CKplayer】使用CKplayer插件在网页中嵌入视频的方法

    在做网站中有时候我们需要在网页中嵌入视频,一般视频嵌入有以下几种方法: 1. 优酷代码嵌入 优点:简单,方便,可靠. 缺点:有广告,现在的网站非常注重用户体验,如果打开一个在线视频是有长广告的一定会崩 ...

  9. BZOJ2006 [NOI2010]超级钢琴 【堆 + RMQ】

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MB Submit: 3446  Solved: 1692 [Submit][Sta ...

  10. 洛谷 P4175 [CTSC2008]网络管理 解题报告

    P4175 [CTSC2008]网络管理 题目描述 带修改树上链的第\(k\)大 输入输出格式 输入格式: 第一行为两个整数\(N\)和\(Q\),分别表示路由器总数和询问的总数. 第二行有\(N\) ...