谢烟客---------Linux之文件安全上下文及特殊权限位
文件的权限位
r, readable
文件:文本查看工具
目录:ls
w, writeable
文件:可修改
目录:可在目录下创建、删除文件
x,exec
文件:可执行
目录:cd 或 ls -l
文件的属主或属组
[root@izpo45bh60h6bsz ~]# ls -l -rw-r--r-- 1 root root 27 Jul 31 20:04 grep.txt rw- 属主的权限 r-- 属组的权限 r-- 其他用户的权限 左root 文件的属主 右root 文件的属组
进程的安全上下文
用户: 文件 文件
centos: /bin/cat /path/to/somefile
1)用户对文件的操作(x)
用户名同文件的属主
用户名同文件的属主,应用属主的权限,不在检查后续的权限(例二中说明)。属主有x,则可执行,运行为一个进程,进程的名字为进程发起者的名字
如果用户名不同文件的属主
用户名同文件的属组,应用属组的权限,不在检查后续的权限。属组有x,则可执行,运行为一个进程,进程的名字为进程发起者的名字
非属主或属组
应用其他用户的权限,有x,则可执行,运行为一个进程,进程的名字为进程发起者的名字
2) 进程对文件的操作(rw)
进程的发起者(进程名)同文件的属主,应用属主的权限,不在检查后续的权限。
进程的发起者(进程名)同文件的属组,应用属组的权限,不在检查后续的权限。
应用其他权限
准备............................ ##确认命令的路径 [root@izpo45bh60h6bsz ~]# which --skip-alias cat /usr/bin/cat ##复制命令 [root@izpo45bh60h6bsz ~]# cp -p /bin/cat /tmp/cat ##same as --preserve=mode,ownership,timestamps [root@izpo45bh60h6bsz ~]# ls -l /tmp/cat -rwxr-xr-x 1 root root 54080 Aug 5 11:28 /tmp/cat 1、创建用户 [root@izpo45bh60h6bsz ~]# useradd centos 2、修改属主和属组 [root@izpo45bh60h6bsz ~]# chown centos.centos /tmp/cat [root@izpo45bh60h6bsz ~]# ls -l /tmp/cat -rwxr-xr-x 1 centos centos 54080 Aug 5 11:29 /tmp/cat #############注意 chmod所有用户可用,chown,chgrp仅root可用#################例一: 1)应用属主的x权限 》》》用户名同属主,属主有x权限,可运行为一个进程 centos用户下 [centos@izpo45bh60h6bsz ~]$ chmod 700 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat -rwx------ 1 centos centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab -rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##进程的发起者非属主非属组,应用/etc/fstab文件的其他用户的权限# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 #例二: 2)应用属组的x权限 》》》用户名同属主同属组,属主无x权限,仅属组有x权限,不能执行 centos用户下 [centos@izpo45bh60h6bsz ~]$ chmod 670 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##用户匹配到的为属主的权限,没有执行权限位x权限 -rw-rwx--- 1 centos centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab -rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##进程不能发起 -bash: /tmp/cat: Permission denied ###由以下的过程分析,首个匹配到centos时,应用首个匹配到的用户的权限。 后面就算有同用户名的属组也不应用其权限#############################》》》用户名不同属主同属组,仅属组有x权限,能执行###### 修改属主为root 回到root用户 [root@izpo45bh60h6bsz ~]# chown root /tmp/cat [root@izpo45bh60h6bsz ~]# ls -l /tmp/cat ##用户为root,应用属主的权限,没有任何权限 ----rwx--- 1 root centos 54080 Aug 5 11:29 /tmp/cat [root@izpo45bh60h6bsz ~]# /tmp/cat /etc/fstab ###嘿嘿,好奇怪# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 #######root用户没有权限,执行。依然有执行权限###########回到centos用户 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##用户为centos,第一个匹配到的是属组,应用属组的权限,属组有x权限,可执行为一个进程 ----rwx--- 1 root centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab -rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##能够执行为进程,进程名为用户名,此时应用/etc/fstab文件其他用户的权限# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 #######比对来看,第一个被匹配到的用户类别,应用对应类的权限###########》》》用户名同属主同属组,仅其他有x权限,不能执行 root用户下 [root@izpo45bh60h6bsz ~]# chown centos:centos /tmp/cat [root@izpo45bh60h6bsz ~]# chmod 667 /tmp/catcentos用户下 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##匹配到第一个同用户名的是属主,应用属主的权限,无x权限,不能运行为进程 -rw-rw-rwx 1 centos centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/fstab -rw-r--r-- 1 root root 358 Jun 11 05:05 /etc/fstab [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##不能运行为一个进程,权限拒绝 -bash: /tmp/cat: Permission denied例三 3)应用其他用户的权限 》》》用户名不同属主不同属组,其他有x权限,能执行 root用户下 [root@izpo45bh60h6bsz ~]# chown root.root /tmp/cat [root@izpo45bh60h6bsz ~]# chmod 755 /tmp/catcentos用户下 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##匹配不到,应用其他权限,其他有x权限,可以运行为一个进程 -rwxr-xr-x 1 root root 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/fstab ##进程名为用户名,进程名不能匹配到/etc/fstab属主或属组的权限,应用其他权限,可读# # /etc/fstab # Created by anaconda on Fri Feb 24 02:58:22 2017 .....
特殊权限位
SUID
文件对文件有x权限,运行为进程后,进程名是进程发起者的名字。
当存在SUID权限后,运行为进程,其进程名是文件的属主
SGID
任何人创建文件和目录时,其属组为创建者的基本组
一旦某目录被设定了SGID权限,则对此目录有写权限的用户,在此目录或子目录中创建的文件为目录的基本组
Sticky
限制公共场景的限制 ,对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件。避免别人删除不属于自己的文件,设置了sticky权限
SUID
1、在root中修改文件的属主和属组 user.user user:user [root@izpo45bh60h6bsz ~]# chown root.centos /tmp/cat [root@izpo45bh60h6bsz ~]# ls -l /tmp/cat -rw-rw-rwx 1 root centos 54080 Aug 5 11:29 /tmp/cat 2、在centos中修改权限属组必须有x [root@izpo45bh60h6bsz ~]# su - centos Last login: Sat Aug 5 11:33:41 CST 2017 on pts/1 Welcome 10003 your home /home/centos [centos@izpo45bh60h6bsz ~]$ chmod 755 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##用户centos匹配到属组的权限,能执行为一个进程,进程的名字为进程发起者的名字 -rwxr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ---------- 1 root root 2895 Aug 5 11:31 /etc/shadow [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/shadow ##进程名不能匹配到/etc/shadow属主或属组,应用其他用户的权限,其他用户没有任何权限。 /tmp/cat: /etc/shadow: Permission denied3、在root用户中给此用户授权suid权限 [centos@izpo45bh60h6bsz ~]$ chmod u+s /tmp/cat chmod: changing permissions of ‘/tmp/cat’: Operation not permitted [root@izpo45bh60h6bsz ~]# chmod u+s /tmp/cat [root@izpo45bh60h6bsz ~]# ls -l /tmp/cat -rwsr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat4、在centos用户中运行cat /etc/shadow [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/cat ##确认权限 -rwsr-xr-x 1 root centos 54080 Aug 5 11:29 /tmp/cat [centos@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ##确认centos用户对文件没有权限,centos用户发起的进程对文件也不可能有权限 ---------- 1 root root 2895 Aug 5 11:31 /etc/shadow [centos@izpo45bh60h6bsz ~]$ /tmp/cat /etc/shadow ##执行时,进程的属主为root,root对任何文件都能操作 ............. test1:!!:17327:0:99999:7:100:100: test2:!!:17327:0:99999:7:100:100: test3:!!:17327:0:99999:7:100:100: test4:!!:17327:0:99999:7:100:100: ..............
问题1:用户为自己设置密码时,需要修改shadow文件,shadow文件对任何用户都没有写权限,故而,用户执行passwd命令后,其进程名不是进程发起者,而是........
[root@izpo45bh60h6bsz ~]# fgrep "test1" /etc/shadow ##纯文本字符组成的PATTERN,对目标文本逐行匹配,打印匹配到的字符所在的行 test1:!!:17327:0:99999:7:100:100: test18:$6...........[root@izpo45bh60h6bsz ~]# su - test1 [test1@izpo45bh60h6bsz ~]$ passwd ##用户没有密码时,不能修改 Changing password for user test1. Changing password for test1. (current) UNIX password: passwd: Authentication token manipulation error[root@izpo45bh60h6bsz ~]# echo "123" | passwd --stdin test1 Changing password for user test1. passwd: all authentication tokens updated successfully.[root@izpo45bh60h6bsz ~]# fgrep 'test1' /etc/shadow test1:$6$tMqP7HCh$Idl82b1AqXsAssE57D2jWQNrMgPRtZ7RP/OoSTNMHzG1fEruYW49f6QZfe314ETLlYwWu5YtUJu8Rx./Uceif/:17383:0:99999:7::: test18:$6...........尝试修改密码,从而修改shadow文件 ##生成密码,普通用户修改密码必须满足密码复杂度机制,长,随机,周期长,数字、字母、特殊字符3种 [root@izpo45bh60h6bsz ~]# tr -dc 'a-zA-Z0-9' < /dev/urandom | head -c 6 | xargs FjG1LO##修改密码 [test1@izpo45bh60h6bsz ~]$ passwd Changing password for user test1. Changing password for test1. (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfully. [test1@izpo45bh60h6bsz ~]$ 查看shadow文件 [root@izpo45bh60h6bsz ~]# fgrep 'test1' /etc/shadow test1:$6$KvgQbaJC$AxpTwktyH1kDldxoMXorPwL/2VHEutGaZq/RXXL8xLPtgStH23MDfHPlo5ZtFKRJTjKv/kmduyeBmPd1xiyV60:17383:0:99999:7::: test18:$6...........###########密码部分改变的原因############## [test1@izpo45bh60h6bsz ~]$ ls -l /bin/passwd ##test1用户能执行此文件 -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd [test1@izpo45bh60h6bsz ~]$ ls -l /etc/shadow ##执行后的进程名为root,故而能改shadow文件 ---------- 1 root root 2985 Aug 5 13:56 /etc/shadow
SGID
1、准备目录 [root@izpo45bh60h6bsz ~]# cd /tmp [root@izpo45bh60h6bsz tmp]# mkdir test[root@izpo45bh60h6bsz tmp]# ls -ld test ##root用户创建,属组、主为root drwxr-xr-x 2 root root 4096 Aug 5 14:54 test[root@izpo45bh60h6bsz tmp]# groupadd mygrp #添加用户 [root@izpo45bh60h6bsz tmp]# groupadd distro [root@izpo45bh60h6bsz tmp]# useradd centos[root@izpo45bh60h6bsz tmp]# chown .mygrp test [root@izpo45bh60h6bsz tmp]# ls -ld test drwxr-xr-x 2 root mygrp 4096 Aug 5 14:54 test》》》任何人创建文件和目录时,其属组为创建者的基本组 1、mygrp用户组内的用户对此目录有w权限 [root@izpo45bh60h6bsz tmp]# chmod g+w test [root@izpo45bh60h6bsz tmp]# ls -ld test drwxrwxr-x 2 root mygrp 4096 Aug 5 14:54 test2、添加distro、centos用户到mygrp组内,让distro用户拥有mygrp组的权限 [root@izpo45bh60h6bsz tmp]# su - centos [centos@izpo45bh60h6bsz ~]$ mkdir /tmp/test/a.centos mkdir: cannot create directory ‘/tmp/test/a.centos’: Permission denied [centos@izpo45bh60h6bsz ~]$ touch /tmp/test/a.centos touch: cannot touch ‘/tmp/test/a.centos’: Permission denied[root@izpo45bh60h6bsz tmp]# gpasswd -a distro mygrp [root@izpo45bh60h6bsz tmp]# gpasswd -a centos mygrp3、让mygrp、distro用户分别在此目录中创建文件 [root@izpo45bh60h6bsz tmp]# su - centos [centos@izpo45bh60h6bsz ~]$ touch /tmp/test/a.centos [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test/a.centos -rw-rw-r-- 1 centos centos 0 Aug 5 15:12 /tmp/test/a.centos[root@izpo45bh60h6bsz tmp]# su - distro [distro@izpo45bh60h6bsz ~]$ touch /tmp/test/a.distro [distro@izpo45bh60h6bsz ~]$ ls -l /tmp/test/a.distro -rw-rw-r-- 1 distro distro 0 Aug 5 15:12 /tmp/test/a.distro》》》一旦某目录被设定了SGID权限,则对此目录有写权限的用户,在此目录或子目录中创建的文件为目录的基本组root用户中 [root@izpo45bh60h6bsz tmp]# ls -ld test drwxr-xr-x 2 root mygrp 4096 Aug 5 14:54 test [root@izpo45bh60h6bsz tmp]# chmod g+s /tmp/test [root@izpo45bh60h6bsz tmp]# ls -ld /tmp/test drwxrwsr-x 2 root mygrp 4096 Aug 5 15:12 /tmp/test ##小写s1、让mygrp、distro用户分别在此目录中创建文件 [root@izpo45bh60h6bsz tmp]# su - distro [distro@izpo45bh60h6bsz ~]$ touch /tmp/test/b.distro [distro@izpo45bh60h6bsz ~]$ ls -l /tmp/test/b.distro -rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 /tmp/test/b.distro[root@izpo45bh60h6bsz tmp]# su - centos [centos@izpo45bh60h6bsz ~]$ touch /tmp/test/b.centos [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test/b.centos -rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 /tmp/test/b.centos
Sticky
##centos用户对目录有写权限,可以删除任意文件 [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test total 0 -rw-rw-r-- 1 centos centos 0 Aug 5 15:12 a.centos -rw-rw-r-- 1 distro distro 0 Aug 5 15:12 a.distro -rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 b.centos -rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 b.distro##删除a.distro文件 [centos@izpo45bh60h6bsz ~]$ rm /tmp/test/a.distro rm: remove write-protected regular empty file ‘/tmp/test/a.distro’? y [centos@izpo45bh60h6bsz ~]$ ls -l /tmp/test total 0 -rw-rw-r-- 1 centos centos 0 Aug 5 15:12 a.centos -rw-rw-r-- 1 centos mygrp 0 Aug 5 15:16 b.centos -rw-rw-r-- 1 distro mygrp 0 Aug 5 15:16 b.distro##避免别人删除不属于自己的文件,设置了sticky权限 [root@izpo45bh60h6bsz tmp]# chmod o+t /tmp/test [root@izpo45bh60h6bsz tmp]# su - centos [centos@izpo45bh60h6bsz ~]$ rm /tmp/test/b.distro rm: cannot remove ‘/tmp/test/b.distro’: Operation not permitted
SGID,SUID,STICKY
sst 三位二进制用八进制表示
000 0001 1010 2011 3100 4101 5 110 6111 71777 --> sticky + rwxrwxrwx 4777 --> suid + rwxrwxrwx
特殊权限位映射
SUID占据属主的执行权限位
SGID占据属组的执行权限位
STICKY占据其他的执行权限位
分别用s,s,t表示,有x权限时,用小宝,没有s权限时,用大写
SUID权限位 1)有x drwxrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos drwxrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos # chmod u+s a.centos drwsrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centos 2)无x # chmod u-x a.centos drwSrwxr-x 2 centos centos 4096 Aug 5 15:11 a.centosSGID权限位 1)有x -rwxrwxr-- 1 distro distro 0 Aug 5 15:04 a.distro # chmod g+s a.distro -rw-rwsr-- 1 distro distro 0 Aug 5 15:04 a.distro 2)无x # chmod g-x a.distro -rw-rwSr-- 1 distro distro 0 Aug 5 15:04 a.distro STICKY权限位 1)无x -rw-rw-r-- 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp chmod o+t a.mygrp -rw-rw-r-T 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp 2)有x # chmod o+x a.mygrp -rw-rw-r-t 1 mygrp mygrp 0 Aug 5 15:03 a.mygrp
转载于:https://blog.51cto.com/sonlich/1953825
谢烟客---------Linux之文件安全上下文及特殊权限位相关推荐
- Linux常用的设置文件安全上下文命令使用方法
设置安全上下文常用命令 setfilecon setfilecon介绍 setfilecon用于设置文件/目录的安全上下文,后面直接跟上安全上下文以及文件的路径,其中待设置的文件/目录路径可以为多个, ...
- SEAndroid安全机制中的文件安全上下文关联分析
前面一篇文章提到,SEAndroid是一种基于安全策略的MAC安全机制.这种安全策略实施在主体和客体的安全上下文之上.这意味着安全策略在实施之前,SEAndroid安全机制中的主休和客体是已经有安全上 ...
- linux centos设置用户目录,Linux/CentOS用户和用户组及权限管理
一:基本概念 linux是一个多任务(multi-task)多用户(multi-user)的操作系统,每个用户和用户组都有自己的ID号UID GID,每个用户都有自己的家目录不能随意访问其他用户的家目 ...
- php linux权限,Linux权限位
Linux 系统,最常见的文件权限有 3 种,即对文件的读(用 r 表示).写(用 w 表示)和执行(用 x 表示,针对可执行文件或目录)权限.在 Linux 系统中,每个文件都明确规定了不同身份用户 ...
- suse LINUX系统中的,用户权限的问题。
关于suse LINUX系统中的,用户权限的问题. 当我们大家用LL或LA命令来查看一下当前目录的相关信息时, 在最前面我们总能看到这样的信息提示: -drrr--o--- 这些就是相关的用户服务对本 ...
- linux 把根目录设置成777权限的补救方法
Linux把根目录设置成777权限的补救方法 前两天蛋蛋手就那么一抖啊,一不小心就把根目录权限设置成777了. 本想执行chmod -R 777 ./* 结果一不小心少按了一个点,变成了chmod - ...
- Linux环境下提升普通用户权限(sudo)
一. Linux环境下提升普通用户权限(sudo) 用sudo让普通用户获得超级用户的一部分权利,能够做超级用户才能做的事情,还能够对普通用户身份做一些限制,指定某一个或某几个人来做,并且普通用户不需 ...
- linux中普通用户用友所有权限,linux文件的特殊权限
1.SetUID的功能 只有可以执行的二进制程序才能设定SUID权限, 命令执行者必须丢该程序拥有x执行权限, 命令执行者在执行该程序时获得该程序文件属主的身份(在执行过程中灵魂附体为文件的属主), ...
- Linux系统之高级用户组和权限管理
Linux系统之高级用户组和权限管理 一.用户的密码策略设置 1.用户的密码文件 2.用户的密码期限配置 ①查看用户密码期限 ②修改密码期限 ③强制用户下一次修改密码 ④用户到期时间设置 3.查看当前 ...
最新文章
- Window对象的判定方法
- 不同视图间的跳转方式
- VTK:网格之QuadricClustering
- caffe编译报错 cudnn.hpp:127:41: error: too few arguments to function ‘cudnnStatus_t cudnnSetPooling2dDe
- 关于拷贝常规数组、std::array和std::vector速度的一些测试
- 在服务中创建用户进程的方法(C#版)
- Undefined exploded archive location(在myeclipse中TOMCAT不能发布程序。)
- 笔记3:STM32F103与STM32F030的区别
- 用c#实现简单的登录和注册功能
- VR全景图在家装行业的应用及发展
- MySQL用户权限详细汇总
- Bluetooth core 5.0 Generic Access Profile ---------- 模式 - BR/EDR 物理传输(physical transport)
- 【算法打开(最短路径)--7.25】
- android pad office,安卓平板电脑也可以使用Office应用了
- Devops成功的八大炫酷工具
- python输入年月日输出年月日_新手学习必看的0基础入门Python与python的输入输出...
- windows shell终端推荐及对比
- C++:实现DNS劫持(附完整源码)
- 图片转文字用什么软件?分享四款实用的文字识别工具
- AWS EC2 存储空间扩容
热门文章
- [每日一题] 11gOCP 1z0-053 :2013-09-29 Flashback Data Archive ...................................6...
- ActiveMQ学习(七)
- 在window平台运行Dubbo的一个小demo
- nano在CentOS上的安装和使用
- delphi中设置系统时间方法
- 打造高效机房就这么简单(一)
- 在XtraGrid中自定义日期编辑控件的格式
- ACR2010_依那西普改善RA患者骨代谢
- Reason not to use LINQ and reason to use
- Expression Web 3 安装问题