linux文件系統特殊權限及suid sgid sticky

linux文件系統特殊權限及suid sgid stickylinux


一、Linux文件系統上的特殊權限安全

   權限模型:
bash

     u, g, oide

     r, w, xui


二、進程的安全上下文:spa

   前提:進程有屬主(進程以哪一個用戶的身份運行);文件有屬主和屬組;orm

     (1) 用戶是否可以把某個可執行程序文件啓動爲進程,取決於用戶對程序文件是否擁有執行權限;進程

     (2) 程序啓動爲進程後,此進程的屬主爲當前用戶,也即進程的發起者;進程所屬的組,爲發起者的基本組;it

     (3) 進程擁的訪問權限,取決其屬主的訪問權限:io

     (a) 進程的屬主,同文件屬主,則應用文件屬主權限;

     (b) 進程的屬主,屬於文件的屬組,則應用文件屬組權限;

     (c) 則應用其它權限;


三、SUID:

     (1) 任何一個可執行程序文件能不能啓動爲進程:取決於發起者對程序文件是否有執行權限;

     (2) 啓動爲進程以後,其屬主不是發起者,而程序文件本身的屬主;這種機制即爲SUID;


   權限設定:

     chmod u+s FILE... 

     chmod u-s FILE...


注意:

s: 屬主本來擁有x權限;

S: 屬主本來無x權限;


四、SGID:

   默認狀況下,用戶建立文件時,其屬級爲此用戶所屬的基本組;

   做用:一旦某目錄被設定了SGID權限,則對此目錄擁有寫權限的用戶在此目錄中建立的文件所屬的組爲目錄的屬組,而非用戶的基本組;


   權限設定:

     chmod g+s FILE...

     chmod g-s FILE...


五、Sticky:

   做用:對於一個多人可寫的目錄,此權限用於限制每一個僅能刪除本身的文件;


   權限設定

     chmod o+t FILE...

     chmod o-t FILE...


SUID, SGID, STICKY

000

001

010

011

100

101

110

111


chmod 4777 FILE

chmod 3755 DIR



六、文件系統屬性chattr權限

   chattr [+,-,=] [選項] 文件或目錄名

   選項:

     i:若是對文件設置i屬性,那麼不容許對文件進行刪除,更名,也不能添加和修改數據;

     若是對目錄設置i屬性,那麼只能修改目錄下文件的數據,但不容許創建和刪除文件,也不能更名

     a:若是對文件設置a屬性,那麼只能在文件中增長數據,可是不能刪除也不能修改數據;只能用重定向追加入數據

     若是對目錄設置a屬性,那麼只容許在目錄中創建和修改文件,可是不容許刪除文件


例子:

[root@localhost ~]# chattr +ia /etc/fstab
[root@localhost ~]# lsattr /etc/fstab
----ia-------e- /etc/fstab
[root@localhost ~]# chattr -ia /etc/fstab
[root@localhost ~]# lsattr /etc/fstab
-------------e- /etc/fstab


七、查看文件系統屬性

   lsattr 選項 文件名

     -a 顯示全部文件和目錄

     -d 若目標是目錄,僅列出目錄自己的屬性,而不是子文件的屬性


例子:

[root@localhost ~]# lsattr -a /usr/local/*
-------------e- /usr/local/bin/.
-------------e- /usr/local/bin/..
-------------e- /usr/local/etc/.
-------------e- /usr/local/etc/..
-------------e- /usr/local/games/.


六、sudo權限

   root把原本只能管理員執行的命令賦予普通用戶執行

     sudo的使用 

     visudo打開/etc/sudoers配置文件


   1.lisir ALL=NOPASSWD:/sbin/service,/sbin/ifconfig,/bin/mount

   上述命令都不輸入密碼


   2.lisir station 73=/sbin/service/,NOPASSWD:/sbin/ifconfig,/bin/mount

   執行service命令需輸入密碼,ifconfig,mount 不須要


   3.lisir station73=(poppy) /sbin/service,NOPASSWD:(root) /bin/mount

   一個用戶能夠執行多個用戶的某些命令


   4.%stu station=NOPASSWD:NETWORKING./bin/

   Stu組中的用戶能夠不輸入用戶密碼執行文件中定義的NETWORKING ,以及目錄/bin下的命令。還記得    嗎?目錄後面必須加上/結尾


   5.poppy ALL=(ALL) ALL

   這個命令很危險 它是是poppy用戶能夠在任何主機上以任何用戶執行任何命令。


Sudo 的特色是:給用戶儘量少的權限,但能完成他們的工做,全部在編輯SUDOERS文件時,注意不要讓非法用戶截取root權限.


例子:

[root@localhost ~]# visudo
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
lisir   ALL=/sbin/fdisk

[root@localhost ~]# su - lisir
[lisir@localhost ~]$ sudo fdisk -l
[sudo] password for lisir:

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00048e25



練習:

一、讓普通用戶能使用/tmp/cat去查看/etc/shadow文件;

答:

[root@localhost ~]# cp -rfp /bin/cat /tmp

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

[root@localhost ~]# su - lisir

[lisir@localhost ~]$ /tmp/cat /etc/shadow



二、建立目錄/test/data,讓某組內普通用戶對其有寫權限,且建立的全部文件的屬組爲目錄所屬的組;此外,每一個用戶僅能刪除本身的文件;

答:

[root@localhost ~]# mkdir -p /test/data

[root@localhost ~]# chmod g+s /test/data/

[root@localhost ~]# chmod o+t /test/data/

[root@localhost ~]# chown :lisir /test/data

[root@localhost ~]# chmod g+w /test/data/

相關文章
相關標籤/搜索