Linux特殊权限
Linux系统特殊权限
set_uid
set_gid
sticky粘滞位
权限属性chattr
进程掩码umask

1.Linux系统特殊权限

s-uid只对可执行文件生效,可以让执行用户使用文件属主执行
s-gid既可以对执行文件生效,也可以对目录生效(建议只对目录生效),实现目录继承权限1.1
对可执行文件的setuid(或setgid)权限表示将以文件的用户(或组)身份运行命令,而不是以运行命令的用户身份[root@zph home]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 8月   9 2019 /usr/bin/passwd目标粘滞位可以为文件删除设置特殊权限,仅文件所有者(和rootyonghu)可以删除目录中的文件[root@zph home]# ll -d /tmp /var/tmp/
drwxrwxrwt.   7 root root  103 3月  23 21:46 /tmp
drwxrwxrwt. 101 root root 8192 3月  23 20:56 /var/tmp/最后,对某目录的setgid权限表示在该目录中创建的文件将继承该目录组所属关系,而不是继承自创建用户,这通常用于组协作目录,将文件从默认的专有组自动改为共享组1.2
特殊权限对文件和目录的影响
特殊权限                           对文件的影响                                                          对目录的影响
u+s suid               以拥有文件的身份,而不是运行文件的用户身份执行文件                                    无影响g+s sgid()                    以拥有文件的组身份执行文件                            在目录中最新创建的文件将其组所有者设置为与目录的组所有者相匹配o+t sticky                           无影响                                       对目录具有写入权限的用户仅可以删除其所拥有的文件,而无法删除或强制保存到其他用户所拥有的文件1.3如何设置特殊权限用符号表示  setuid=u+s   setgid=g+s   sticky=o+t用数值表示  setuid=4      setgid=2      sticky=11.4
suid例子:
//检查passwd文件权限,匿名用户没有权限查看
chmod 640 /etc/passwd
//使用普通用户无法查看
//给cat命令赋予suid
chmod 4755 /usr/bin/cat
//再次使用普通用户查看
1.4.1suid 授权方法
suid     4000 权限字符s(S) 用户位置上x位置上设置
授权方法授权方法  chmod 4755 passwdchmod   u+s   passwd1.4.2
suid作用
让普通用户临时拥有可执行的二进制文件的所属主权限,二进制文件需要有执行权限
当二进制文件没有执行权限时,suid的权限显示就是大S,suid仅对二进制可执行程序有效
如果普通需要操作没有权限的文件,为对应的命令赋予suid权限,可以实现操作1.5
set_gid文件的有效执行组身份为文件的拥有组,而不是执行者的组身份目录里新建的文件的拥有组会自动继承目录的拥有组身份[root@zph home]# chmod 777 /opt/
[root@zph home]# chmod g+s /opt/
[root@zph ~]# su - zph[zph@zph ~]$ mkdir /opt/sgid_test
[zph@zph ~]$ ll  -d /opt/sgid_test/
drwxrwsr-x 2 zph root 6 3月  23 23:04 /opt/sgid_test/1.5.1
sgid授权方法
sgid     2000 权限字符s(S),用户位置上的x位上设置
授权方法chmod 2755 directorychmod g+S directory1.5.2
sgid作用
针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致
默认所有用户创建文件,用户和组都是本身,sgid可以让其他用户在此目录下创建的文件和目录,具有和此目录相同的用户组设置
当为某个目录设置了sgid位后,在该目录中所创建的文件具有该目录的所有组权限,而不是创建该文件的用户默认所有者,这样,使得在多个用户之间共享一个目录中的文件变得简单1.6
sticky粘滞位
sticky对目录有写权限的用户仅仅可以删除目录里属于自己的文件,不能删除其他用户的文件
/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板
所有一般生产环境将/tmp目录权限改为1755  没有写权限  配合ACL  赋予用户写权限1.6.1
sticky授权方法粘滞位  1000 权限字符t(T),其他用户位的x位上设置授权方法: chmod 1755 /tmpchmod o+t  /tmp1.6.2
sticky作用
让多个用户都具有写权限,每个用户只能删自己的文件,表现在others的x位,用小写t表示
如果没有执行权限是T,那么一个目录即使它的权限为777 如果设置了粘滞位,除了目录的属主和root用户有权限删除,其他用户都不能删除这个目录1.7为什么权限表示里会出现大写字母S/S/T
注 因为文件目录没有执行权限1.8chattr管理 Linux 系统中的文件和目录,除了可以设定普通权限和特殊权限外,还可以利用文件和目录具有的一些隐藏属性。chattr 命令,专门用来修改文件或目录的隐藏属性,只有 root 用户可以使用。该命令的基本格式为:
[root@localhost ~]# chattr [+-=] [属性] 文件或目录名+ 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。chattr 命令常用的属性选项及功能
属性选项                                                功能
i                             如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件;a                               如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据;如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件;u                   设置此属性的文件或目录,在删除时,其内容会被保存,以保证后期能够恢复,常用来防止意外删除文件或目录。s                       和 u 相反,删除文件或目录时,会被彻底删除(直接从硬盘上删除,然后用 0 填充所占用的区域),不可恢复。注意,通常情况下,不要使用 chattr 命令修改 /、/dev/、/tmp/、/var/ 等目录的隐藏属性,很容易导致系统无法启动。
另外,chatrr 命令常与 lsattr 命令合用,前者修改文件或目录的隐藏属性,后者用于查看是否修改成功。1.9
查看文件的系统属性:lsattrlsattr 命令,用于显示文件或目录的隐藏属性,其基本格式如下:
[root@localhost ~]# lsattr [选项] 文件或目录名常用选项有以下 3 种:-a:后面不带文件或目录名,表示显示所有文件和目录(包括隐藏文件和目录)-d:如果目标是目录,只会列出目录本身的隐藏属性,而不会列出所含文件或子目录的隐藏属性信息;-R:和 -d 恰好相反,作用于目录时,会连同子目录的隐藏信息数据也一并显示出来。1.10

一、umask介绍

在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。二、umask值的含义可以使用命令 umask 来查看umask值hadoop@sench-pc:~$ umask
0002可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r,则创建文件的最终默认权限为  -rw-rw-r-- 。同理,目录的默认权限为 drwxrwxrwx ,则d rwx rwx rwx - 002 = (d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x,所以用户创建目录的默认访问权限为 drwxrwxr-x 。我们通过下面的例子验证一下:hadoop@sench-pc:~$ umask
0002
hadoop@sench-pc:~$ touch test.txt
hadoop@sench-pc:~$ ls -l test.txt
-rw-rw-r-- 1 hadoop hadoop 0 4月  24 20:31 test.txt
hadoop@sench-pc:~$ mkdir test
hadoop@sench-pc:~$ ls -al test
总用量 8
drwxrwxr-x  2 hadoop hadoop 4096 4月  24 20:32 .
drwxr-xr-x 52 hadoop hadoop 4096 4月  24 20:32 ..可以看到文件test.txt的权限为 -rw-rw-r-- ,目录test的权限为 drwxrwxr-x ( . 代表当前目录,也就是test目录的属性)。umask 命令显示的为umask的数字值,还可以使用命令 umask -S 来显示umask的符号值:hadoop@sench-pc:~$ umask -S
u=rwx,g=rwx,o=rx可以看出(rwx rwx rwx) - (rwx rwx r-x) = (--- --- -w-) = 002 。三、更改umask值可以通过命令 umask 值 的方式来更改umask值,比如我要把umask值改为027,则使用命令 umask 027 即可。改成027后,用户权限不变,群组权限减掉2,也就是去掉写(w)权限,其他用户减7,也就是去掉读写执行权限(rwx),所以其他用户没有访问权限。hadoop@sench-pc:~$ umask 027
hadoop@sench-pc:~$ umask
0027
hadoop@sench-pc:~$ touch test.txt
hadoop@sench-pc:~$ ls -l test.txt
-rw-r----- 1 hadoop hadoop 0 4月  24 20:49 test.txt
hadoop@sench-pc:~$ mkdir test
hadoop@sench-pc:~$ ls -al test
总用量 8
drwxr-x---  2 hadoop hadoop 4096 4月  24 20:49 .
drwxr-xr-x 52 hadoop hadoop 4096 4月  24 20:49 ..可以看到文件的默认访问权限变为了 -rw-r----- ,目录test的默认访问权限变为了 drwxr-x--- 。这种方式并不能永久改变umask值,只是改变了当前会话的umask值,打开一个新的terminal输入umask命令,可以看到umask值仍是默认的002。要想永久改变umask值,则可以修改文件/etc/bashrc,在文件中添加一行 umask 027 。

四、总结

当我们想改变创建文件和目录时的默认访问权限,则可以通过umask命令来实现。

Linux攻关之基础模块十 特殊权限相关推荐

  1. Linux攻关之基础模块十二 进程相关

    Linux系统进程管理 什么是进程 进程生命周期 监控和管理进程 静态监控进程 动态监控进程 信号管理进程 后台进程管理 1.什么是进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分分配内存 ...

  2. Linux攻关之基础模块十四 文件查找

    文件查找 在文件系统上查找符合条件的文件实现工具:locate find 1.locate 依赖于事先构建好的索引库系统自动实现(周期性任务)手动更新数据库(updatedb)工作特性查找速度快模糊查 ...

  3. Linux攻关之基础模块九 系统基本权限

    Linux系统权限 Lin系统基本权限 Linux系统特殊权限 Linux系统ACL Linux系统权限 r-- 100 4 -w- 010 2 --x 001 1chown:Linux中用来改变某个 ...

  4. Linux攻关之基础模块七 命令总结

    1.帮助命令 man info help --help man info 手册页,较详细的帮助 help:内部命令帮助 -help:外部命令帮助 2.文件和目录操作命令 ls du tree mkdi ...

  5. Linux攻关之基础模块四 命令初识

    1.问题: (1)切记不要乱删东西 /root 服务器出现异常的原因: 误操作(勤备份,尽量不要在重要的目录里操作(/tmp),企业要求尽量不要使用root用户登录) 系统负载大 (2)快照 2.Li ...

  6. Linux攻关之基础模块三 文件命令

    1.1 在linux下隐藏文件是以"."开头的,单纯的使用ls命令是看不到的,加上"-a"参数才可以. 删除则可以使用命令:rm -fr .*(删除当前目录下的 ...

  7. Linux攻关之基础模块一 系统准备

    1.CentOS7.5 修改IP 1.1 ifconfig 查看IP地址 CentOS7修改IP的方法: 第一种:nmtui 第二种:修改网卡配置文件 cat /etc/sysconfig/netwo ...

  8. Linux攻关之基础模块五 Vim

    vim基本介绍 vim模式介绍 vim命令模式 vim编辑模式 vim末行模式 vim视图模式 vim环境变量 vim扩展知识 1.vi与vim vi与vim的区别 vi不显示高亮颜色语法 vim显示 ...

  9. JAVASE基础模块十五(StringBuffer类)

    JAVASE基础模块十五(StringBuffer类) public class Stbuffer { public static void main(String[] args) { //总共创建五 ...

最新文章

  1. python安装包-Python安装包+安装教程
  2. 如何让 Flutter 应用更好地使用 SVG?
  3. mysql表空间权限_MySQL InnoDB表空间加密示例详解
  4. spark学习-Spark性能调优(1)
  5. fdisk -l查看硬盘分区信息及硬盘分区介绍
  6. keepalived+LVS 详解(2) -- keepalived.conf解析
  7. backtrack5 oracle,BackTrack5(BT5)硬盘安装
  8. linux内存硬件检测工具下载,极品内存检测工具(Memtest86)
  9. 第十届泰迪杯数据挖掘B题电力系统负荷预测分析
  10. 32位java8,jdk8下载,解压版
  11. su的2019面试准备
  12. kubernetes架构及核心概念
  13. LaTex中插入超链接
  14. 【USACO】2007 Feb Silver Lilypad Pond 白银莲花池
  15. 【C语言】输出由各种符号打印出的三角形
  16. Android仿微信上传图片发朋友圈
  17. 一篇博客解决网线挑选问题
  18. 分享一些QQ常用的WEB接口(新)
  19. 谷歌浏览器无法打开localhost:3000,打开localhost就跳转测试地址问题
  20. pip 因为网络问题而导致安装库失败

热门文章

  1. 计算机网络—CSMA/CD协议
  2. 头条2019.3.16笔试题
  3. 拼多多商家想做好推广一定不能这么做!
  4. kubernetes缔造者Craig McLuckie谈:有效的产品管理
  5. golang 获取当天0点时间_golang 获取当天是周几(两种方法)
  6. 小程序实现image标签的图片铺满整个屏幕,高度自适应
  7. PASCAL VOC2012数据集
  8. 如何在PowerPoint中更改文本的大小写
  9. C 时间库 time.h 获取当前时间
  10. 大神级DIY作品:运动跟随大眼睛,软件硬件结构一个都不能少