linux特殊权限管理

特殊权限:SUID SGID STICKY

正常情况下: 

1、进程以某用户的身份运行; 进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作;

2、权限匹配模型:

(1) 判断进程的属主,是否为被访问的文件属主;如果是,则应用属主的权限;否则进入第2步;

(2) 判断进程的属主,是否属于被访问的文件属组;如果是,则应用属组的权限;否则进入第3步;

(3) 应用other的权限;

 

SUID

正常情况下:用户发起的进程,进程的属主是其发起者;因此,其以发起者的身份在运行;

SUID的功用:用户运行某程序时,如果此程序拥有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件自己的属主;

 

chmod u(+|-)sFILE…   例:chmod u+s /tmp/cat

 

执行/tmp/cat命令可以这样用 ~]$ /tmp/cat /etc/shadow

展示位置:属主的执行权限位

如果属主原本有执行权限,显示为小写s; 否则,显示为大写S

 

 注意:SUID非常有风险,慎用

 

如下列演示:由于others用户breeze没有查看的权利,直接用cat查看时cat是以breeze的身份查看的,所以无权查看。/tmp/cats权限,

且其属主为root,所以breeze执行"/tmp/cat /etc/shadow"时是以root的身份查看的,所以就能查看成功。

 

[breeze@yph7 ~]$id

uid=1004(breeze)gid=1004(breeze) =1004(breeze) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[breeze@yph7 ~]$ll /etc/shadow

———-. 1root root 2482 12 15 21:44 /etc/shadow

[breeze@yph7 ~]$cat /etc/shadow

cat: /etc/shadow:权限不够

 

[root@yph7 tmp]#which cat

/usr/bin/cat

[root@yph7 tmp]#cp /usr/bin/cat /tmp

[root@yph7 tmp]#ll

总用量 56

-rwxr-xr-x. 1root root 54048 12 16 03:57 cat

[root@yph7 tmp]#chmod u+s /tmp/cat

[root@yph7 tmp]#ll

总用量 56

-rwsr-xr-x. 1root root 54048 12 16 03:57 cat

[breeze@yph7 ~]$/tmp/cat /etc/shadow

root:$6$aVx67dPp………G9ylO/2AWEzvMSC60G8y8qkA/:16777:0:99999:7:::

bin:*:16372:0:99999:7:::

daemon:*:16372:0:99999:7:::

 

others用户对/etc/passwd 没有w权限,那么others用户如何把密码写进/etc/passwd中去的呢?因为/etc/passwds权限,

others用户执行passwd命令时是以root身份执行的,所以就能以root身份更写密码了。同样以root身份把密码写到/etc/shadow中。

 

[root@yph7 tmp]#which passwd

/usr/bin/passwd

[root@yph7 tmp]#ls -l /usr/bin/passwd

-rwsr-xr-x. 1root root 27832 6  10 2014 /usr/bin/passwd

 

SGID

功用:当目录属组有写权限,且有SGID权限时,那么所有属于此目录的属组,且以属组身份在此目录中新建文件或目录时,

新文件的属组不是用户的基本组,而是此目录的属组;

 

管理文件的SGID权限:

chmod g+|-sFILE…

 

展示位置:属组的执行权限位

如果属组原本有执行权限,显示为小写s; 否则,显示为大写S

 

SGIDs权限时,组成员创建文件时,创建的文件属于成员的这个附加组。

而不是原来的基本组。

 

[root@yph7 ~]#usermod -G apache gentoo

[root@yph7 ~]#usermod -G apache hadoop

[root@yph7 ~]#id gentoo

uid=4006(gentoo)gid=5003(gentoo) =5003(gentoo),2011(apache)

[root@yph7 ~]#id hadoop

uid=2051(hadoop)gid=2001(hadoop) =2001(hadoop),2011(apache)

[root@yph7 ~]#mkdir /tmp/text

[root@yph7 ~]#chown .apache /tmp/text;ls -ld /tmp/text

drwxr-xr-x. 2root apache 6 12 16 04:47/tmp/text

[root@yph7 ~]#chmod g+w /tmp/text;ls -ld /tmp/text

drwxrwxr-x. 2root apache 6 12 16 04:47/tmp/text

 

切换到gentoo用户

[gentoo@yph7text]$ cd /tmp/text

[gentoo@yph7text]$ touch a.gentoo

[gentoo@yph7text]$ su – hadoop

密码:

上一次登录:一 12 14 21:38:17 CST2015230pxs/4 

Hello,hadoopWelcome to login,the time is 2015-12-16-05:05:27

[hadoop@yph7 ~]$cd /tmp/text ;touch a.hadoop

[hadoop@yph7text]$ ll

总用量 0

-rw-rw-r–. 1gentoo gentoo 0 12 16 05:05 a.gentoo

-rw-rw-r–. 1hadoop hadoop 0 12 16 05:05 a.hadoop———>创建的文件属主仍属于用户自

                                                                                                己的基本组,而不是附加组apache

 

root给组增加s权限

[root@yph7 ~]#chmod g+s /tmp/text

[root@yph7 ~]#ls -ld /tmp/text

drwxrwsr-x. 2root apache 36 12 16 05:05 /tmp/text

 

gentooHadoop用户创建文件

[hadoop@yph7text]$ touch b.hadoop

[hadoop@yph7text]$ su – gentoo

密码:

上一次登录:三 12 16 04:49:54 CST2687pxs/3 

Hello,gentooWelcome to login,the time is 2015-12-16-05:09:38

[gentoo@yph7 ~]$touch /tmp/text/b.gentoo

[gentoo@yph7 ~]$ls  -l /tmp/text

总用量 0

-rw-rw-r–. 1gentoo gentoo 0 12 16 05:05 a.gentoo

-rw-rw-r–. 1hadoop hadoop 0 12 16 05:05 a.hadoop

-rw-rw-r–. 1gentoo apache 0 12 16 05:09 b.gentoo————>组增加s权限后,组内用户创                                                                                                            建的文件属组就为apache

-rw-rw-r–. 1hadoop apache 0 12 16 05:09 b.hadoop

 

[gentoo@yph7 ~]$rm -rf /tmp/text/a.hadoop——————>gentoo可以删除hadoop的文件

[flimmer@yph7~]$ su – hadoop

Password:

Last login: WedDec 16 05:05:27 CST 2015 on pts/3

Hello,hadoop Welcometo login,the time is 2015-12-16-05:28:57

[hadoop@yph7 ~]$rm -rf /tmp/text/a.gentoo——————>hadoop可以删除gentoo的文件

[hadoop@yph7 ~]$ls -l /tmp/text

总用量 0

-rw-rw-r–. 1gentoo apache 0 12 16 05:09 b.gentoo

-rw-rw-r–. 1hadoop apache 0 12 16 05:09 b.hadoop

 

 

这样,组内用户的问文件组内成员都可以改,w权限不能随便给的,这样相对更安全

但是这样组内成员由于具有w权限,可以随意删除他人文件,也是不太安全,如何防止

同组用户删除他人文件呢,这用到了sticky权限

 

Sticky

功用:对于属组或全局可写的目录,组内的所有用户或系统上的所有用户对在此目录中都能创建新文件或删除所有的已有文件;

如果为此类目录设置Sticky权限,则每个用户能创建新文件,且只能删除自己的文件;

 

管理文件的Sticky权限:

chmod o+|-tFILE…

 

展示位置:其它用户的执行权限位

如果其它用户原本有执行权限,显示为小写t; 否则,显示为大写T

 

 

系统上的/tmp/var/tmp目录默认均有sticky权限;

 

 

[root@yph7 ~]#chmod o+t /tmp/text

[root@yph7 ~]#ls -ld /tmp/text

drwxrwsr-t. 2root apache 36 12 16 05:29 /tmp/text

 

[hadoop@yph7 ~]$rm -rf /tmp/text/b.gentoo——————–hadoop无法删除gentoo的文件,虽然有w权限

rm: 无法删除"/tmp/text/b.gentoo": 不允许的操作

 

[gentoo@yph7 ~]$rm -rf /tmp/text/b.hadoop———————-gentoo无法删除hadoop的文件,虽然有w权限

rm: 无法删除"/tmp/text/b.hadoop": 不允许的操作

[gentoo@yph7 ~]$ls -l /tmp/text

总用量 0

-rw-rw-r–. 1gentoo apache 0 12 16 05:09 b.gentoo

-rw-rw-r–. 1hadoop apache 0 12 16 05:09 b.hadoop

[gentoo@yph7 ~]$rm -rf /tmp/text/b.gentoo

[gentoo@yph7 ~]$ls -l /tmp/text

总用量 0

-rw-rw-r–. 1hadoop apache 0 12 16 05:09 b.hadoop—————-gentoo可以删除自己的文件

 

 

管理特殊权限的另一方式:

suid sgidsticy     八进制权限

0 0 0    0

0 0 1    1

0 1 0    2

0 1 1    3

1 0 0    4

1 0 1    5

1 1 0    6

1 1 1    7

 

基于八进制方式赋权时,可于默认的三位八进制数字左侧再加一位八进制数字;

 

例如:chmod 1777

 

 

faclfile access control lists

 

文件的额外赋权机制:

在原来的u,g,o之外,另一层让普通用户能控制赋权给另外的用户或组的赋权机制;

 

getfacl命令:查看列表

getfacl FILE…

user:USERNAME:MODE

group:GROUPNAME:MODE

 

setfacl命令:

赋权给用户:

setfacl  -m u:USERNAME:MODE  FILE…

赋权级组:

setfacl  -m g:GROUPNAME:MODE FILE…

会发现权限上多个加号

 

撤销赋权:

setfacl  -x u:USERNAME FILE…

setfacl  -x g:GROUPNAME  FILE…

 

例: 

setfacl -mg:mygrp:rw file

撤销facl为:

setfacl -x u:fedora file

具体演示如下:

用户进程先看是否属主权限,再看是否访问列表权限,再看属组,others

 

对于others用户来说

[breeze@yph7 ~]$touch /tmp/a.breeze

[breeze@yph7 ~]$ls -l /tmp/a.breeze

-rw-rw-r–. 1breeze breeze 0 12 16 05:53 /tmp/a.breeze

 

[flimmer@yph7~]$ cat etc/issue > /tmp/a.breeze

-bash:/tmp/a.breeze: Permission denied———————flimmer作为others用户没有w权限

 

[breeze@yph7 ~]$getfacl /tmp/a.breeze

getfacl:Removing leading '/' from absolute path names

# file:tmp/a.breeze

# owner: breeze

# group: breeze

user::rw-

group::rw-

other::r–

 

[breeze@yph7 ~]$setfacl -m u:flimmer:rw /tmp/a.breeze

[breeze@yph7 ~]$getfacl /tmp/a.breeze

getfacl:Removing leading '/' from absolute path names

# file:tmp/a.breeze

# owner: breeze

# group: breeze

user::rw-

user:flimmer:rw-    ———————————–多出一行指明了flimmer的权限

group::rw-

mask::rw-

other::r–

 

[flimmer@yph7~]$ tail -2 /etc/passwd > /tmp/a.breeze

[flimmer@yph7~]$ cat /tmp/a.breeze ———————虽然others是只读权限,但仍能写进去

bat2:x:4012:4012::/home/bat2:/bin/bash

bat3:x:4013:4013::/home/bat3:/bin/bash

 

[breeze@yph7 ~]$setfacl -m u:flimmer:— /tmp/a.breeze  ——-flimmer拉黑

 

[flimmer@yph7~]$ cat /tmp/a.breeze

cat:/tmp/a.breeze: Permission denied ——flimmer连查看的权利都没有了

 

对于属组来说

[breeze@yph7 ~]$chmod 644 /tmp/a.breeze

[breeze@yph7 ~]$ls -l /tmp/a.breeze

-rw-r–r–+ 1breeze breeze 78 12 16 05:57 /tmp/a.breeze ——-属组没有w权限的,

[breeze@yph7 ~]$setfacl -m g:apache:rw /tmp/a.breeze ———–给组apache加特权

[breeze@yph7 ~]$id gentoo

uid=4006(gentoo)gid=5003(gentoo) =5003(gentoo),2011(apache) ——–gentoo属于apache

 

[gentoo@yph7 ~]$tail -2 /etc/shells > /tmp/a.breeze

[gentoo@yph7 ~]$cat /tmp/a.breeze  ———-gentoo属于apache,属组只有r权限,

                                                                        但apache有特  权仍能改写文件内容

/bin/tcsh

/bin/csh

 

 

[flimmer@yph7~]$ getfacl /tmp/a.breeze ————–flimmer被拉黑,但他可以

                                                                                    查看别人的列表,不侵犯隐私?

getfacl:Removing leading '/' from absolute path names

# file:tmp/a.breeze

# owner: breeze

# group: breeze

user::rw-

user:flimmer:—

group::rw-

group:apache:rw-

mask::rw-

other::r–

原创文章,作者:flivfox,如若转载,请注明出处:http://www.178linux.com/10179

(0)
flivfoxflivfox
上一篇 2015-12-19 20:30
下一篇 2015-12-19 20:35

相关推荐

  • 系统管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生产环境中的服务器在处理请求并生成回应数据的时间主要消耗在服务器端,包括了众多的环节,如何全面了解我们linux服务器的CPU使用率、使用时间、内存占用比例、磁盘IO数据、网络相关数据等等众多指标,保证我们的linux服务器顺利完成每一个请求,怎能没有几个趁手的利刃,而今天就让我们见识一下系统管理中三大利刃。 相传一把三尺长的软剑,叫…

    Linux干货 2015-11-18
  • lvs DR模型

    LVS 负载均衡 使用lvs部署负载均衡服务器  实现4层tcp调度 lvs一共四种模式   分别是NAT  DR  TUN和FullNAT模式 NAT模式和DR模式部署相对简单而且实用性强 现在部署一下  LVS的DR模型 首先准备三台主机  使用的三台系统都是centos 7…

    2017-05-15
  • 网络基础

    什么是计算机网络? 是指将地理位置不同的具有独立功能的多台计算机及外部设备,借助于某种网络介质连接起来,实现资源共享和信息传递的计算机系统 计算机网络的特点? 1、能实现数据信息的快速传输和集中处理 2、可共享计算机系统资源 3、提高了计算机的可靠性及可用性 4、能均衡负载互相协作 常见的网络应用程序 Web 浏览器(Chrome、IE、Firef…

    Linux干货 2016-09-09
  • 编译安装bind9

    一、下载bind9.9.5源码包     可以通过www.isc.org站点来获得源码包。 二、将源码包解压到任意目录     源码包通常都是.tar.gz文件,因此我们需要先将其解压: 三、编译安装bind     1、安装前的准备工作 …

    Linux干货 2015-05-05
  • Linux发展史

    Linux发展史 一、历史 (一)、Unix 1、Unix操作系统是一个强大的多用户、多任务操作系统,支持多种处理器架构。 2、最早由KenThompson(汤普逊)、Dennis Ritchie(丹尼斯·里奇,C语言之父,Unix之父)和Douglas McIlroy(麦克罗伊,程式设计师)于1969年在AT&T的贝尔实验室开发。 3、目前它的商标…

    Linux干货 2016-10-14
  • mysql进阶至mysql备份基础及备份工具

    一、mysql备份、恢复基础 备份:存储的数据副本 还原:把副本应用到线上系统,仅能恢复至备份操作时刻的数据状态。 硬件上的冗余并不能有效恢复逻辑操作上的错误。 备份:数据备份、服务配置文件备份、系统环境备份。程序的运行依赖于一定的系统环境,仅提供数据本身并不能确保恢复数据之后系统可用,数据备份的目的在于确保系统出现不可预料的灾难事故之后能够快速恢复运行,降…

    2016-11-18

评论列表(1条)

  • stanley
    stanley 2015-12-19 20:33

    内容详实有料,样式上再好了点头条了