***Linux 系统文件除了9位基本权限,还有额外3位特殊权限,分别是SUID(setuid),SGID(setgid),SBIT(sticky bit)

一、Linux 系统文件3位特殊权限位说明

标注:这3位特殊权限不建议使用(除系统默认的特殊权限可以使用以外),除非有特殊需求

特殊权限

特殊权限位小写

特殊权限位大写

权限值

s (suid)

小写s (有suid执行权限)

大写S (无suid执行权限)

4

s (sgid)

小写s (有sgid执行权限)

大写S (无sgid执行权限)

2

t(sticky bit)

小写t (有sticky bit执行权限)

大写T (无sticky bit执行权限)

1

0恢复文件原来权限,chmod 0755 file

SUID

标注:见下面范例1

1、SUID是对二进制命令或二进制程序有效,对目录无效

2、普通用户具有该文件其它用户x执行权限并分配了s权限将具有文件所有者的权限

3、用户属主对应的前三位权限的x位上如果有s就表示suid权限,当x位上没有小写x执行权限时候,suid的权限显示就是大S

4、suid权限仅在程序命令执行过程中有效

5、suid功能是一把双刃剑,是一个比较危险的功能,对系统安全有一定威胁系统,suid的无用的功能取消suid权限(安全优化)

SGID

标注:见下面范例2

1、SGID和SUID不同之处在于,SGID可以用于目录

2、SGID的权限s是出现在文件用户组的x权限位上

SGID针对文件

1、sgid仅对二进制命令程序有效

2、普通用户具有该文件其它用户x执行权限并分配了s权限将具有文件所属用户组的权限

3、执行命令任意用户可以获取该命令程序执行期间所属用户组的权限

SGID针对目录

1、linux 默认情况所有用户创建文件,默认用户和组都是自身

2、sgid可以让用户再此目录下创建的文件和目录,具有和此目录相同的用户组设置

sgid位主要用在目录中,当为某个目录设置sgid位以后,在改目录中

新创建的文件具有改目录的所属组权限,而不是创建改文件的用户的默认

所有者,这样,使得在多个用户之间共享一个目录中的文件变得简单

SBIT  (粘滞位)

标注:见下面范例3

1、SBIT与SUID,SGID不同的是,SBIT只能用于目录

2、普通用户在该目录下,仅目录属主与root才有权力删除\移动\重命名目录

3、如果目录权限是777并添加粘滞位t,普通用户可以在此目录下创建文件和目录

二、特殊权限位设置方法

范例1:SUID设置方法

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 root root 4096 Dec  5 19:16 /oldboy/

[root@oldboy ~]# ls -l /oldboy/test.sh

-rw-r--r-- 1 root root 0 Dec  5 19:16 /oldboy/test.sh

[root@oldboy ~]# which rm

alias rm='rm -i'

/bin/rm

[root@oldboy ~]# ls -l /bin/rm

-rwxr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

rm: remove write-protected regular empty file `/oldboy/test.sh'? y

rm: cannot remove `/oldboy/test.sh': Permission denied

[oldboy@oldboy ~]$ su - root

Password:

[root@oldboy ~]# ls -l /bin/rm

-rwxr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# chmod u+s /bin/rm              ##等同命令chmod 4755 /bin/rm,取消suid命令 chmod u-s /bin/rm或chmod 0755 /bin/rm

[root@oldboy ~]# ls -l /bin/rm

-rwsr-xr-x. 1 root root 57440 Oct 15  2014 /bin/rm

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

[oldboy@oldboy ~]$ ls -l /oldboy/

total 0

范例2:GUID设置方法

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 root root 4096 Dec  5 19:28 /oldboy/

[root@oldboy ~]# chown oldboy.incahome /oldboy/

[root@oldboy ~]# ls -ld /oldboy/

drwxr-xr-x 2 oldboy incahome 4096 Dec  5 19:28 /oldboy/

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# ls -l /oldboy/test.sh

[root@oldboy ~]# ls -l /oldboy/

total 0

-rw-r--r-- 1 root root 0 Dec  5 19:29 test.sh

[root@oldboy ~]# chmod g+s /oldboy/               ##等同命令chmod 2755 /bin/rm,取消guid命令 chmod g-s /bin/rm或chmod 0755 /bin/rm

[root@oldboy ~]# touch /oldboy/file.txt

[root@oldboy ~]# ls -l /oldboy/

total 0

-rw-r--r-- 1 root incahome 0 Dec  5 19:29 file.txt

-rw-r--r-- 1 root root     0 Dec  5 19:29 test.sh

范例3:SBIT设置方法

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# mkdir /oldboy/share

[root@oldboy ~]# chmod 777 /oldboy/

[root@oldboy ~]# chmod 777 /oldboy/share/

[root@oldboy ~]# chmod 777 /oldboy/test.sh

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwx 2 root root 4096 Dec  6 10:23 /oldboy/

[root@oldboy ~]# ls -l /oldboy/

total 4

drwxrwxrwx 2 root root 4096 Dec  6 10:24 share

-rwxrwxrwx 1 root root    0 Dec  6 10:23 test.sh

[root@oldboy ~]# chmod 1777 /oldboy/            ##等同命令chmod o+s /oldboy

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwt 3 root root 4096 Dec  6 10:24 /oldboy/

[root@oldboy ~]# su - oldboy

[oldboy@oldboy ~]$ rm /oldboy/test.sh

rm: cannot remove `/oldboy/test.sh': Operation not permitted

[oldboy@oldboy ~]$ rm -rf /oldboy/share/

rm: cannot remove `/oldboy/share': Operation not permitted

[oldboy@oldboy ~]$ mv /oldboy/test.sh /tmp/

mv: try to overwrite `/tmp/test.sh', overriding mode 0755 (rwxr-xr-x)? y

mv: cannot move `/oldboy/test.sh' to `/tmp/test.sh': Operation not permitted

[oldboy@oldboy ~]$ mv /oldboy/test.sh /oldboy/file.sh

mv: cannot move `/oldboy/test.sh' to `/oldboy/file.sh': Operation not permitted

[oldboy@oldboy ~]$ cp /oldboy/test.sh /tmp/

cp: cannot create regular file `/tmp/test.sh': Permission denied

[oldboy@oldboy ~]$ touch /oldboy/file.txt

[oldboy@oldboy ~]$ mkdir /oldboy/user

[oldboy@oldboy ~]$ ls -l /oldboy/

total 8

-rw-r--r-- 1 oldboy root    0 Dec  6 10:30 file.txt

drwxrwxrwx 2 root   root 4096 Dec  6 10:28 share

-rwxrwxrwx 1 root   root    0 Dec  6 10:28 test.sh

drwxr-xr-x 2 oldboy root 4096 Dec  6 10:31 user

[oldboy@oldboy ~]$ su - root

Password:

[root@oldboy ~]# rm -rf /oldboy/test.sh

[root@oldboy ~]# rm -rf /oldboy/share/

三、chattr改变文件属性(特殊功能)

参数

参数原版描述

备注

实例

+i

A file with the “i” attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be  written to the file.

让任何用户(包括root管理员)无法删除\重命名\移动目录,但可以复制目录。如果针对文件添加i权限是无法修改\删除\添加文件的内容并且无法删除\重命名\移动文件,但可以复制文件

范例1

-i

取消i功能

范例1

-a

A  file with the ‘a’ attribute set can only be open in append mode for writing.

功能类似“i”,只是多了一个可以追加的功能

范例2

范例1:

1、针对oldboy目录添加i权限

[root@oldboy ~]# mkdir /oldboy

[root@oldboy ~]# chmod 777 /oldboy/

[root@oldboy ~]# touch /oldboy/test.sh

[root@oldboy ~]# touch /oldboy/file.txt

[root@oldboy ~]# chmod 777 /oldboy/*

oot@oldboy ~]# ls -l /oldboy/

total 0

-rwxrwxrwx 1 root root 0 Dec  6 11:21 file.txt

-rwxrwxrwx 1 root root 0 Dec  6 11:21 test.sh

[root@oldboy ~]# chattr +i /oldboy/

[root@oldboy ~]# ls -ld /oldboy/

drwxrwxrwx 2 root root 4096 Dec  6 11:21 /oldboy/

[root@oldboy ~]# lsattr -d /oldboy/

----i--------e- /oldboy/

[root@oldboy ~]# lsattr /oldboy/

-------------e- /oldboy/file.txt

-------------e- /oldboy/test.sh

[root@oldboy ~]# rm -rf /oldboy/

rm: cannot remove `/oldboy/file.txt': Permission denied

rm: cannot remove `/oldboy/test.sh': Permission denied

[root@oldboy ~]# mv /oldboy/* /tmp/

mv: cannot move `/oldboy/file.txt' to `/tmp/file.txt': Permission denied

mv: overwrite `/tmp/test.sh'? y

mv: cannot move `/oldboy/test.sh' to `/tmp/test.sh': Permission denied

[root@oldboy ~]# mv /oldboy/test.sh /oldboy/test.sh.bak

mv: cannot move `/oldboy/test.sh' to `/oldboy/test.sh.bak': Permission denied

[root@oldboy ~]# echo "test" > /oldboy/test.sh          ##这个文件内容不属于/oldboy/ block范围内

[root@oldboy ~]# cat /oldboy/test.sh

test

[root@oldboy ~]# lsattr -d /oldboy/

----i--------e- /oldboy/

[root@oldboy ~]# chattr -i /oldboy/

[root@oldboy ~]# lsattr -d /oldboy/

-------------e- /oldboy/

2、针对test.sh文件添加i权限

[root@oldboy ~]# touch test.sh

[root@oldboy ~]# chmod 777 test.sh

[root@oldboy ~]# ls -l test.sh

-rwxrwxrwx 1 root root 30 Dec  1 09:14 test.sh

[root@oldboy ~]# chattr +i test.sh

[root@oldboy ~]# lsattr test.sh

----i--------e- test.sh

[root@oldboy ~]# rm -rf test.sh

rm: cannot remove `test.sh': Operation not permitted

[root@oldboy ~]# mv test.sh /tmp/

mv: overwrite `/tmp/test.sh'? y

mv: cannot move `test.sh' to `/tmp/test.sh': Operation not permitted

[root@oldboy ~]# echo "abc" > test.sh

-bash: test.sh: Permission denied

[root@oldboy ~]# echo "abc" >> test.sh

-bash: test.sh: Permission denied

范例2:

[root@oldboy ~]# touch test.sh

[root@oldboy ~]# lsattr test.sh

-------------e- test.sh

[root@oldboy ~]# chattr +a test.sh

[root@oldboy ~]# lsattr test.sh

-----a-------e- test.sh

[root@oldboy ~]# rm -rf test.sh

rm: cannot remove `test.sh': Operation not permitted

[root@oldboy ~]# > test.sh

-bash: test.sh: Operation not permitted

[root@oldboy ~]# echo 123 >> test.sh

[root@oldboy ~]# cat test.sh

123

Linux 文件特殊权限_013的更多相关文章

  1. Linux文件的权限与属性

    由于以前学习Linux的时候没有做比较全面的总结笔记,而且平时大部分工作都在windows上进行,所以关于Linux的一些知识点有所遗忘.近期难得空闲,翻阅书籍,学习<鸟哥的Linux私房菜&g ...

  2. Linux学习之十五-Linux文件特殊权限和附加权限

    Linux文件特殊权限和附加权限 1.特殊权限suid 范围:只能针对二进制命令文件 作用:让普通用户拥有二进制命令文件所有者的权限 举例1:普通用户使用passwd命令修改密码 cat /etc/s ...

  3. Linux文件/目录权限设置命令:chmod

    文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设定法 其语法格式为:chmod [w ...

  4. Linux文件普通权限

    1.文件所有者,所属用户组,其他用户1)文件所有者:创建文件的用户2)所属用户组:文件属于哪个用户组3)其他用户:不是文件所有者,不属于文件所属用户组的用户,称为其他用户 2.Linux文件权限我们切 ...

  5. linux文件访问权限(像rw-r--rw-是什么意思)

    Linux的文件访问权限分为 读.写.执行三种 r:可读(4) w:可写(2)对目录来说则可新建文件 x:可执行(1)对目录来说则可进入该目录 可用 ls -l 查看文件 像上图的-rw-r--rw- ...

  6. Linux 文件特殊权限 SUID SGID SBIT

    文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...

  7. Linux 文件普通权限_011

    一.文件权限10个字符对应类型和权限 二.Linux普通文件和Linux目录读.写.执行权限说明 标注:Linux 中的文件名是存在于父目录的block里面,并指向这个文件的inode节点 1.lin ...

  8. linux文件基本权限-基本权限的修改

    基本权限的修改 当我们在linux或unix系统的terminal输入"ls -l"命令时,将输出文件的详细信息.第一列,如“drwxr-xr-x”就是文件的权限信息. yinti ...

  9. [apue] linux 文件访问权限那些事儿

    前言 说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程.一个进程能不能访问一个文件,其实由三部分内容决定: 文件的所有者.所在的组: 文件对所有者.组用户.其它用户设置的权限访 ...

随机推荐

  1. 潭州课堂25班:Ph201805201 爬虫高级 第十一课 Scrapy-redis分布 项目实战 (课堂笔

  2. BZOJ4910 : [Sdoi2017] 苹果树

    问题等价于树形依赖背包,允许一条链每个点各免费一次. 设$f[i][j]$表示按DFS序考虑到$i$,体积为$j$的最大收益. 先放入不能免费的物品,等遍历完儿子后再放入必选的物品,那么$i$到根路径 ...

  3. Android Studio 解决ADB检测不到手机导致无法连接的问题

    ADB的全称是Android Debug Bridge,是用来管理模拟器和真机的通用调试工具. 开USB调试 方法:手机设置 - 开发人员选项 - USB调试 - 勾选(开发者调试被隐藏了,在关于手机 ...

  4. boost::lockfree::queue多线程读写实例

    最近的任务是写一个多线程的东西,就得接触多线程队列了,我反正是没学过分布式的,代码全凭感觉写出来的,不过运气好,代码能够work= = 话不多说,直接给代码吧,一个多消费者,多生产者的模式.假设我的任 ...

  5. Selenium Java环境配置

    Selenium Java环境配置 上次配置的是C#的环境,今天主要来配置一下Java环境. 首先,对于java环境配置最基础的JDK和JRE 先前我做过配置,这里就不重述了,网上的教程超级多.在基础 ...

  6. svn提交报错Previous operation has not finished; run 'cleanup' if it was interrupted

    从SVN上拉下来Document文档(word和excel),在本地修改后,准备通过TortoiseSVN提交,发现报错. Error: Previous operation has not fini ...

  7. 利用exif.js解决手机上传竖拍照片旋转90\180\270度问题

    原文:https://blog.csdn.net/linlzk/article/details/48652635/ html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针 ...

  8. 修复恢复"可疑"的SQLServer数据库

    今天机房突然断电,DB连不上了,提示 无法打开数据库'MyDB'.恢复操作已将该数据库标记为 SUSPECT. 原因是断电导致DB文件损坏 通过SQL Server Management Studio ...

  9. Android Studio3.0.1集成Git

    1:前提 本机可以根据SSH的方式正常连接git服务器 2:开始配置 file-settings-Version Control 点击右边的+号天添加项目所在目录,VCS类型选择Git 点击 Conf ...

  10. 什么?又是404!趣图助你理解HTTP状态码~

    HTTP状态码(一):   注释: 301—永久移动.被请求的资源已被永久移动位置: 302—请求的资源现在临时从不同的 URI 响应请求: 305—使用代理.被请求的资源必须通过指定的代理才能被访问 ...