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.www58058.com/10179

(0)
flivfoxflivfox
上一篇 2015-12-19
下一篇 2015-12-19

相關推薦

  • Linux的用戶組和權限管理之特殊權限及ACL的使用

    用戶組和權限管理 一、了解和使用批量新建用戶和批量修改用戶密碼: ##用戶創建的模板和配置文件的存放位置:/etc/default/useradd;/etc/skel/* ;/etc/login.defs## 批量新建用戶(newusers):適合用于新老機器轉換時,遷移系統上的用戶。 使用格式: newusers  passwd  fi…

    Linux干貨 2016-08-04
  • Apc緩存Opcode

    1、PHP執行 PHP的運行階段也分成三個階段: Parse。語法分析階段。 Compile。編譯產出opcode中間碼。 Execute。運行,動態運行進行輸出。                            …

    Linux干貨 2015-04-10
  • 馬哥linux0811作業內容

    總結位置變量$1,$2.. $10,$11…MAX 位置變量的含義分別就是代表第幾個參數,$1就是腳本運行的第一個參數.$2就是第二個.以此類推.直到最后. $*,$@,$# 區別 特殊變量: $0 : 表示命令本身 $#:傳遞給命令的參數個數 $*:傳遞給腳本的所有參數(所有參數是一個整體的字符串) $@:傳遞給腳本的所有參數(各個參數都是獨立…

    Linux干貨 2016-08-19
  • 第四周練習與作業

    一、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符 復制文件至/tmp目錄下: cp /etc/profile /tmp/ vim /tmp/profile 進入文件命令模式下,使用正則表達式  ;%s/^[[:blank:]]\+//g 二、復制/etc/rc.d/init.d/fu…

    2017-08-05
  • nginx_http_proxy,upstream,stream模塊簡析

    一. ngx_http_proxy_module模塊:         模塊功能: 為后端httpd服務做反向代理, 并且與Httpd 之間使用http進行通信       1、proxy_pass URL;  &nbs…

    Linux干貨 2016-10-29
  • 文本處理工具初探

    作為一個系統管理員,文本處理功能是經常使用的,熟練地使用各種文本工具有助于提高工作效率,從繁忙的工作中早點解脫。下面就來介紹處理文本的常用命令。 處理文本的命令大致分為:        查看文件內容:cat、less、more       …

    Linux干貨 2016-08-07

評論列表(1條)

  • stanley
    stanley 2015-12-19 20:33

    內容詳實有料,樣式上再好了點頭條了

欧美性久久久久