Linux中賬號管理之權限管理(下)

linux中的賬號管理我們在前面兩張已經介紹了一些用戶和組的相關概念,常用的配置文件,命令的使用?,F在我們來看看賬號管理中最傲嬌的部分就是我們的權限管理。

一、簡單介紹權限的概念

以install.log這個文件為例,查看install.log的元數據,從下圖可以看出,每個文件或者目錄都有它的所屬的主和所屬組,最左邊顯示不僅有它所屬類型,還有它的讀取寫入執行的權限,為什么目錄或者文件要設置這些權限呢,這肯定是出于安全的考慮。如果linux系統中不設置這些權限,就容易被攻擊。


1.png

文件的權限主要針對三類對象進行定義:

owner:屬主,u

group:屬組,g

other:其他,o

每個文件針對每類訪問者都定義了三種權限:

r: Readable,讀

w: Writable,寫

x: eXcutable,執行

二、三種權限對文件和目錄的影響

11.png

對文件的影響:

    r: 可使用文件查看類工具獲取其內容

w: 可修改其內容,不能刪除文件本身

x: 可以把此文件提請內核啟動為一個進程(針對二進制程序或腳本,普通文件不需要添加此權限)

X:也是執行的權限,但是在文件中有兩種情況出現

    a) 文件的權限中有執行權限,全部添加執行權限

    b) 文件的權限中沒有執行權限,就不加執行權限

例如:

雖然/bin/cat沒有執行權限,但是有讀取的權限,可以使用其他查看工具來查看,此文件為二進制文件

查看/bin/cat文件,可以看出這個文件對普通權限只有讀的操作

Linux中賬號管理之權限管理(下)

切換到clq這個用戶

Linux中賬號管理之權限管理(下)

用cat這個工具不能查看文件內容,因為沒有寫入執行的權限,使用echo重定向輸入會報錯

Linux中賬號管理之權限管理(下)

cat命令為二進制文件,使用其他工具可以查看cat文件

Linux中賬號管理之權限管理(下)

對目錄的影響:

r: 可以使用ls查看此目錄中文件列表(可以查看目錄內文件列表,但不能訪問文件,不能cd,也不能查看文件的元數據)

w: 可在此目錄中創建文件,也可刪除此目錄中的文件但是要配合執行權限

x: 可以使用ls -l查看此目錄中文件列表,可以cd進入此目錄

X:加上此權限相對與將這三類對象全部加上執行的權限了

例如:

1、因為test相對于f1這個文件他只是個other組,other組的權限只有讀取,沒有寫入執行等操作

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

2、當我把f1的文件屬主改為test用戶的時候,test擁有rw權限

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

3、文件對用戶只有執行操作,用戶可以執行這條命令,但是不能讀取

10.png

三、修改文件的屬主和屬組chown,chgrp

chown命令:

chown命令改變某個文件或目錄的所有者和所屬的組,該命令可以向某個用戶授權,使該用戶變成指定文件的所有者或者改變文件所屬的組。用戶可以是用戶或者是用戶id,用戶組可以是組名或組id。文件名可以使由空格分開的文件列表,在文件名中可以包含通配符.

格式:chown[OPTION]… [OWNER][:[GROUP]] FILE…

用法:

OWNER         改變用戶的屬主

OWNER:GROUP   改變用戶的屬主屬組

:GROUP        改變用戶的屬組

命令中的冒號可用.替換;

選項:

    -c或--changes:效果類似“-v”參數,但僅回報更改的部分;     
    -f或--quite或--silent:不顯示錯誤信息; 
    -h或--no-dereference:只對符號連接的文件作修改,而不更改其他任何相關文件; 
    -R或--recursive:遞歸處理,將指定目錄下的所有文件及子目錄一并處理; 
    -v或--version:顯示指令執行過程; 
    --dereference:效果和“-h”參數相同;
    --help:在線幫助;
    --version:顯示版本信息。 
    --reference=<參考文件或目錄>:把指定文件或目錄的擁有者與所屬群組全部設成和參考文件或目錄的擁有者與所屬群組相同;

chgrp修改屬組的命令:

格式:chgrp[OPTION]… GROUP FILE…

常用選項:

    chgrp[OPTION]... --reference=RFILE FILE...    
    -R 遞歸

四、修改文件的屬

chmod命令用來變更文件或目錄的權限。在UNIX系統家族里,文件或目錄權限的控制分別以讀取、寫入、執行3種一般權限來區分,另有3種特殊權限可供運用。用戶可以使用chmod指令去變更文件與目錄的權限,設置方式采用文字或數字代號皆可。符號連接的權限無法變更,如果用戶對符號連接修改權限,其改變會作用在被連接的原始文件

    權限范圍的表示法如下:    
    u User,即文件或目錄的擁有者; 
    g Group,即文件或目錄的所屬群組;
    o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬于這個范圍; 
    a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶; 
    r 讀取權限,數字代號為        “4”; 
    w 寫入權限,數字代號為        “2”; 
    x 執行或切換權限,數字代號為  “1”; 
    - 不具任何權限,數字代號為    “0”;
     
    s 特殊功能說明:變更文件或目錄的權限

例如:

   可以直接用數字表示權限,用法比較簡單,不加以舉例
   rw-r-----:640 
   rwxr-xr-x: 755

1、給f1文件的主加上執行權限,組和其他用戶加上寫權限

1.png

2、取消這些權限使用減號

2.png

3、u=空格,把所有權限都取消了

3.png

五、新建文件和目錄的默認權限

umask值可以用來保留在創建文件權限

新建FILE權限: 666-umask

    如果所得結果某位存在執行(奇數)權限,則將其權限+1

新建DIR權限: 777-umask

非特權用戶umask是002

root的umask是022

   用法:
    umask: 查看
    umask#: 設定    
    umask002
    umask–S 模式方式顯示
    umask–p 輸出可被調用

全局設置:/etc/bashrc用戶設置:~/.bashrc

六、Linux文件上的特殊權限

三種特殊權限為:SUID, SGID, Sticky

三種常用權限:r, w, x user, group, other

使用這三種權限的前提:進程有屬主和屬組;文件有屬主和屬組

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

(2) 啟動為進程之后,其進程的屬主為發起者;進程的屬組為發起者所屬的組

例如:

cat命令查看/etc/shadow是由wang這個發起者決定的,不是root這個所有者決定,wang用戶繼承的是other的權限

4.png

5.png

6.png

(3) 進程訪問文件時的權限,取決于進程的發起者

    (a) 進程的發起者,同文件的屬主:則應用文件屬主權限

    (b) 進程的發起者,屬于文件屬組;則應用文件屬組權限

    (c) 應用文件“其它”權限

可執行文件上行SUID權限

    為什么/etc/shadow文件設置嚴格,但是普通用戶還是可以修改密碼呢,這是因為在passwd上面設置了一個SUID權限;SUID:當用戶去運行passwd的時候,他將繼承該程序所有者root的權限

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬主

SUID只對二進制可執行程序有效

SUID設置在目錄上無意義

權限設定:

chmod  u+s  FILE…

chmod  u-s  FILE…

GUID權限

對可執行文件而言:

任何一個可執行程序文件能不能啟動為進程:取決發起者對程序文件是否擁有執行權限

啟動為進程之后,其進程的屬主為原程序文件的屬組

權限設定:

chmod  g+s  FILE…

chmod  g-s  FILE…

對目錄而言:

默認情況下,用戶創建文件時,其屬組為此用戶所屬的主組

一旦某目錄被設定了SGID,則對此目錄有寫權限的用戶在此目錄中創建的文件所屬的組為此目錄的屬組

通常用于創建一個協作目錄

權限設定:

    chmodg+sDIR…

    chmodg-s DIR…

Sticky位

具有寫權限的目錄通常用戶可以刪除該目錄中的任何文件,無論該文件的權限或擁有權

在目錄設置Sticky 位,只有文件的所有者或root可以刪除該文件

sticky 設置在文件上無意義

普通用戶wang不僅可以對自己的文件進行刪除操作,對其他用戶的文件也可以刪除,這樣會帶來安全隱患

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

現在在目錄那里加上粘滯位之后,就不能刪除其他用戶的權限了

13.png

權限設定:

chmodo+tDIR…

chmodo-t DIR…

    例如:

    ls-ld/tmpdrwxrwxrwt12rootroot4096Nov215:44/tmp

權限位映射

SUID: user,占據屬主的執行權限位

      s: 屬主擁有x權限

      S:屬主沒有x權限

SGID: group,占據屬組的執行權限位

      s: group擁有x權限

      S:group沒有x權限

Sticky: other,占據other的執行權限位

      t: other擁有x權限

      T:other沒有x權限

數字表示:u:4;g:2;o:1

          chmod  4777 /tmp/a.txt (繼承所有者權限)

           chmod  2777 /tmp/a.txt (繼承所屬組權限)

七、chattr,lasttr設置文件特定屬性

chattr +i 不能刪除,改名,更改

   chattr +i /etc/fstab

然后試一下rm、mv、rename等命令操作于該文件,都是得到Operation not permitted的結果

14.png

chattr +a 只能增加

   chattr +a /test/yuan

15.png

chattr +A,訪問時間的屬性被鎖定不做修改,解鎖:-A

16.png

lsattr 顯示特定屬性

       用于查看文件的第二擴展文件系統屬性

    顯示一個i,說明被鎖定了,把i去掉就可以執行一些操作了

     17.png

八、訪問控制列表

概念:

ACL:Access Control List,實現靈活的權限管理

除了文件的所有者,所屬組和其它人,可以對更多的用戶設置權限

CentOS7.0默認創建的xfs和ext4文件系統有ACL功能。

CentOS7.X之前版本,默認手工創建的ext4文件系統無ACL功能。需手動增加:

    tune2fs –o acl/dev/sdb1

    mount –o acl/dev/sdb1 /mnt

ACL生效順序:所有者,自定義用戶,自定義組,其他人


    為多用戶或者組的文件和目錄賦予訪問權限rwx

選項: 

mount -o acl /directory    臨時開啟分區acl權限

getfacl file |directory    查看acl權限

setfacl -m u:wang:rwx file|directory 這個目錄對wang用戶設置了rwx權限

setfacl -Rm g:sales:rwX directory   setfacl-R:遞歸設定acl權限

遞歸權限和默認權限都是針對目錄而言的,不能給文件設置。

setfacl -M file.acl file|directory

如果經常要對某些用戶設置一樣的權限就可以使用-M

例如;

vim acl.txt

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

如果另外一個文件對這些用戶也做同樣的設置

3.png

setfacl -m g:salesgroup:rw file| directory  對組設置權限

setfacl -x u:wang file |directory 刪除設置的acl權限

例如:

刪除wangcai對f1 acl設置的權限

4.png

setfacl -X file.acl directory    對某些用戶做刪除

例如:

vim acl12.tt

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

setfacl -m d:u:wang:rx directory   設定默認acl權限

對新建文件默認不能帶x權限,目錄是可以加的

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

setfacl-k dir     刪除默認ACL權限

9.png

setfacl-b file1清除所有ACL權限

10.png

getfacl file1 | setfacl–set-file=-file2 復制file1的acl權限給file2

11.png

最大有效權限與刪除

mask只影響除所有者和other的之外的人和組的最大權限

mask需要與用戶的權限進行邏輯與運算后,才能變成有限的權限(Effective Permission)

用戶或組的設置必須存在于mask權限設定范圍內才會生效。setfacl-m mask::rxfile


?–set選項會把原有的ACL項都刪除,用新的替代,需要注意的是一定要包含UGO的設置,不能象-m一樣只是添加ACL就可以.如:

?setfacl –set u::rw,u:wang:rw,g::r,o::-file1

恢復和備份acl

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息

#getfacl -R /tmp/dir1 > acl.txt

#setfacl -R -b /tmp/dir1

#setfacl -R –set-file=acl.txt /tmp/dir1

#getfacl -R /tmp/dir1

九、練習

1、在/data/testdir里創建的新文件自動屬于g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬于g1,g2,g3)不能訪問這個文件夾

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

2、設置/test/f1的權限,使user1用戶不可以讀寫執行,g1組可以讀寫 /test/dir的權限,使新建文件自動具有acl權限:user1:rw,g1:—;備份/test目錄中所有文件的ACL,清除/test的所有ACL權限,并利用備份還原

Linux中賬號管理之權限管理(下)

Linux中賬號管理之權限管理(下)

原創文章,作者:xiaoqing,如若轉載,請注明出處:http://www.www58058.com/30661

(0)
xiaoqingxiaoqing
上一篇 2016-08-08
下一篇 2016-08-08

相關推薦

  • shell腳本編程初步

    shell腳本編程初步    隨著課程學習的深入,我們已經學習了一些常用的命令,會去解決了一部分簡單的問題,但是這不能滿足復雜的工作,它可以幫助我執行自動化的常用命令、執行系統管理和故障排除、創建簡單的應用程序、處理文本或文件。所以我們開始了shell腳本的編程,幫助我們更好的去完成工作。簡單地說,shell編程相當于幫我們之前…

    Linux干貨 2016-08-15
  • Linux源程序包相關概念整理

    一、      Linux源程序包介紹 1)    linux源程序包基礎 1.         遵循常用開源協議:BSD、Apache Licence 2.0、GPL、LGPL、MIT 2.&nbs…

    系統運維 2015-09-22
  • 第七周

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; 第一步先在磁盤上創建分區:fdisk /dev/sdc n –> e –> 5 –> default &#…

    Linux干貨 2017-05-18
  • mongodb數據庫切分

    前言:  相信維護過有大數據的MySQL的運維人員一定對sharding這個非常了解,MySQL數據庫切分自身沒有工具需要借助第三方工具進行;MySQL切片是一件非常頭疼而又難做的一件事,一旦切分錯誤,不僅不能優化數據庫,反而會加劇數據庫負載;mongodb相對于MySQL來說,數據庫切分是mongodb與生俱來的功能,mongodb會自動切分數據…

    Linux干貨 2015-09-05
  • LVM2:創建、使用、擴展、縮減、快照五步驟

    LVM2這是個關鍵的概念,還是從操作中比較容易理解 1、創建一個至少有兩個PV組成的大小為40G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄 注意點:在vmware中添加兩塊硬盤,但是并不能馬上可以查看,需要掃描一下磁盤,磁盤未/dev/sdc,/dev/sdd 然后創建LVM的基…

    Linux干貨 2016-09-05
欧美性久久久久