天天看點

安全上下文以及FACL

安全上下文:

  cat --> /bin/cat

  openstack: /bin/cat /etc/fstab

   /etc/shadow

  openstack, passwd, /etc/shadow

  s: suid, set uid,屬主有s權限,意味着使用者在執行此程式時,其程序的屬主不再是發起者本人,而是這個程式檔案的屬主;

      s:屬主原有執行權限

      S:屬主無執行權限

     chmod u(+|-)s /path/to/somefile

  s: sgid, set gid,屬組有s權限,意味着執行此程式時,其程序的屬組不再是運作者本人所屬的基本組,而是此程式檔案的屬組;

      chmod g+|-s /path/to/somefile

      t: sticky, 粘貼位,附加other的權限上,表現為t

      t:other原有執行權限

      T:other原無執行權限

     chmod o+|-t /path/to/somefile

  suid,sgid,sticky

        ugt   000--------->0

              001:--------->1

              010:--------->2

              100:--------->3

              011:--------->4

              101:--------->5

              110:--------->6

              111:--------->7

  chmod 6664 /tmp/a.txt  其中6664的第一位的數字6表示:屬主有s權限,屬組有s權限其它無t權限。

   umask: 0022

     /tmp/test

   chmod g+s,o+t /tmp/test

   chmod 3775 /tmp/test

   chown :mygrp /tmp/test修改組名

FACL: 檔案通路控制清單

   hadoop: /var/tmp/test.txt

    hadoop, hadoop

    hadoop希望能夠讓hive寫此檔案,他該如何進行?因為他不能把hive使用者設定為屬主,并且也不能讓hive加入hadoop組,是以隻能修改other的權限有寫權限;

   acl: 用于實作在原有的通路控制機制之外補充一種檔案通路控制機制

使用者通路檔案:

1、使用者是否為檔案屬主?

2、使用者是否有特定的通路控制條目?

3、使用者是否屬于檔案屬組?

4、使用者所屬的組是否有特定的通路控制條目?

5、其它。

   getfacl /path/to/somewhere: 檢視檔案或目錄的通路控制清單;

   setfacl -m u:USERNAME:MODE /path/to/somewhere: 為USERNAME指定的使用者設定對文 件/path/to/somewhere具有MODE通路權限;

   setfacl -m g:GROUPNAME:MODE  /path/to/somewhere: 為GROUPNAME指定的組設定對檔案/path/to/somewhere具有MODE通路權限;

   setfacl -x u:USERNAME /patn/to/somewhere 取消USERNAME指定的使用者具有s權限

   setfacl -x g:GROUPNAME /path/to/somewhere  取消USERNAME指定的組具有s權限

  額外挂載的檔案系統預設不支援acl,如果要支援,

方法1:

  mount -o acl DEVICE MOUNT_POINT

   永久有效:需要編輯/etc/fstab,在挂載選項後附加acl選項;

方法2:設定分區的預設挂載選項中有acl,則挂載時無須再指定acl;

    tune2fs -o acl DEVICE

  取消此預設挂載選項:

    tune2fs -o ^acl DEVICE

    hadoop: 檔案/var/tmp/hadoop.txt, 664

 拒絕hive使用者對此的任何通路;

    setfacl -m u:hive:--- /var/tmp/hadoop.txt

例:複制檔案/var/log/messages至/data目錄, 其屬主為root使用者,且有讀寫權限,屬組為root組,且有讀寫權限;可以被任何人讀取,可以被gentoo使用者和magedu組讀寫,但centos使用者沒有任何通路權限;

解析:首先要確定有data目錄,

# mkdir /data

複制檔案/var/log/messages至/data目錄

# cp /var/log/messages /data

修改權限

# chmod 664 /data/mesages

可以被gentoo使用者和magedu組讀寫,就要設定gentoo使用者和magedu組具有rw權限

# setfacl -m u:gentoo:rw /data/mesages    

# setfacl -m g:magedu:rw /data/mesages  

centos使用者沒有任何通路權限  

# setfacl -m u:centos:--- /data/mesages

本文轉自 宋鵬超 51CTO部落格,原文連結:http://blog.51cto.com/qidian510/1258364,如需轉載請自行聯系原作者