CentOS6.5菜鳥之旅:文件權限詳解

1、前言                                html

  Linux下全部資源、設備均被視做文件來操做,而文件權限則是決定用戶可各文件操做的範圍,不管是平時使用Linux,仍是寫程序均涉及這方面。如下爲我的學習的整理,供之後查閱。linux

 

2、 三種權限                             shell

1. 普通權限數組

權限 文件 目錄
r,讀權限 查看文件內容 列出其子目錄結構信息(就是可執行 ls 目錄 )
w,寫權限 配合r權限,則可對文件進行修改和刪除 配合x權限就能夠添加、刪除和移動內部文件,而刪除目錄和複製目錄內文件則須要配合r和x權限。
x,執行權限 配合r權限,可執行的權限 能夠進入該目錄和對其下文件做操做(就是可執行 cd 目錄 )

2. 特殊權限bash

    場景1:用戶A在調用程序B時,且程序B須要修改文件C,而用戶A無權修改文件C,那麼程序B一樣將被拒絕修改文件C。學習

    緣由:程序將使用調用者(就是用戶A)的用戶標識去對系統做操做,程序的權限與調用者的權限一致。ui

    須要:讓程序使用與調用者無關的用戶或用戶組標識,那麼任何調用者執行該程序時均無差別。加密

    解決辦法:使用特殊權限SUID和GUID。spa

權限 文件 目錄
SUID

注意:僅對二進制可執行文件設置操作系統

二進制可執行文件會以全部者和調用者的用戶標識去執行,也就是擁有二者的權限。

不對目錄設置
GUID

注意:僅對二進制可執行文件設置

二進制可執行文件會以所屬組和調用者的標識去執行,也就是擁有二者的權限。

在目錄下建立文件、目錄等,其所屬組與該目錄的所屬組相同。而不是全部者的用戶組了。

   場景2:某用戶在執行 rm -rf 目錄/* 時,把全部者不是它的文件、目錄都誤刪除了。

   緣由:默認狀況下,只要用戶擁有某目錄的wx權限,則能夠刪除、剪切該目錄下的全部文件、目錄,即便該用戶對該目錄下的文件、目錄任何權限都沒有。

   需求:只刪除全部者爲本身的文件、目錄。

   解決辦法:使用特殊權限SBIT。

權限 文件 目錄
SBIT(stick bit,粘滯位)  不對文件設置 配合wx權限,僅目錄的全部者、子目錄或文件的全部者和root用戶才能刪除、移動該目錄下的子目錄和文件

 

3. 隱藏權限

   共13種,僅在文件系統格式爲Ext2+纔有效。

 

3、經過命令瞭解權限                            

 上一節咱們從概念上了解了linux的文件權限的種類,下面經過命令來實幹一番。

 1. 查看權限

 輸入 ls -l 就能夠查看當前目錄下全部文件和子目錄的權限信息了。

 假設回顯信息爲  -rwsr-xr-x 1 root root 430540 Dec 20 18:27 /usr/sbin/passwd ,如今逐一分析其內容。

   ①. 首字符-,表示該文件爲普通文件。

         -,普通文件;

         d,目錄文件;

         l,符號連接;

         c,字符設備文件;

         b,字節設備文件;

         p,先進先出文件;

         s,套接字文件。

  ②. 第2~4個字符,表示全部者(owner)的權限

  ③. 第5~7個字符,表示所屬組(group)的權限

  ④. 第8~10個字符,表示其餘用戶(other)的權限

  ⑤. 第11個字符,表示硬連接數

  ⑥. 是文件全部者的用戶名稱(owner)

  ⑦. 是文件所屬組的用戶組名稱(group)

  ⑧. 是文件大小,以塊爲單位,經過 ls -lh 則會以KB,MB做單位

  ⑨. 是最後修改日期

  ⑩. 是文件或目錄的絕對路徑

  從上述內容咱們能夠得知Linux下的權限角色有三種,分別是全部者(owner)所屬組(group)其餘用戶(other)

2. 權限表示形式

  [a]. 符號表示法

  普通權限:

    r,讀權限; w,寫權限;x,可執行權限。

  特殊權限:

   SUID權限只能設置在②中,s表示二進制可執行文件同時擁有SUID權限和x可執行權限;S表示二進制可執行文件擁有SUID權限但沒有x可執行權限。

   SGID權限只能設置在③中,s表示二進制可執行文件或目錄同時擁有SGID權限和x可執行權限;S表示二進制可執行文件或目錄擁有SGID權限但沒有x可執行權限。

   SBIT權限只能設置在④中,t表示目錄同時擁有SBIT權限和x可執行權限;T表示目錄擁有SBIT權限但沒有x可執行權限。

 

  [b]. 數字表示法

   數字表示法採用二進制形式計算,八進制形式設置的方式。

   二進制形式計算,1表明有權限,0表明無權限:

      全部者 所屬組 其餘用戶
SUID SGID SBIT R W X R W X R W X
1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0 1/0

   而後每三位爲一組轉爲八進制,例如如今二進制形式爲100111101101,那麼轉爲八進制則爲4755。

   而後經過 chmod 4755 文件 就能夠改變文件的權限, ls -l 回顯中權限部分則爲rwsr-xr-x。

   注意:1. 若不設置特殊權限時,咱們能夠直接省去八進制的第一位數,例如: chmod 755 文件 ;

            2. 採用數字表示法設置特殊權限,僅能啓動特殊權限,卻沒法關閉。例如,文件A擁有特殊權限SUID和SGID,執行 chmod 0755 文件A ,但經過 ls -l 查看權限依然爲rwsr-sr-x。

 

4、經過符號表示法設置權限                      

  經過數組表示法設置權限有時確實不夠方便,因而bash爲咱們提供了符號表示法來設置權限。

  設置普通權限

// 爲全部者、所屬組和其餘用戶添加執行的權限
chmod +x 文件路徑
// 爲全部者、所屬組和其餘用戶刪除執行的權限
chmod -x 文件路徑

// 爲全部者添加執行的權限
chmod u+x 文件路徑
// 爲所屬組添加執行的權限
chmod g+x 文件路徑
// 爲其餘用戶添加執行的權限
chmod o+x 文件路徑
// 爲全部者、所屬組添加執行的權限
chmod ug+x 文件路徑

// 爲全部者、所屬組和其餘用戶添加寫、執行的權限,取消讀權限
chmod =wx 文件路徑
// 爲全部者、所屬組添加寫、執行的權限,取消讀權限
chmod ug=wx 文件路徑

  設置特殊權限

// 開啓、關閉SUID
chmod u+s 文件名
chmod u-s 文件名

// 開啓、關閉SGID
chmod g+s 文件名
chmod g-s 文件名

// 開啓、關閉SBIT
chmod o+t 文件名
chmod o-t 文件名

 

5、改變全部者、所屬組                            

  1. 查看用戶信息

// 查看當前用戶
whoami

// 查看當前用戶所屬組
groups

// 查看其餘用戶所屬組
groups 用戶1 用戶2

  2. 改變全部者、所屬組

 僅root用戶纔有權限執行下列命令。

// 改變全部者
chown 用戶名 文件路徑

// 改變所屬組
chgrp 用戶組 文件路徑

// 改變全部者和所屬組
chown 用戶名.用戶組 文件路徑

// 遞歸改變全部者和所屬組
chown -R 用戶名.用戶組 目錄路徑

 

6、管理用戶                                    

 1. 添加用戶

     命令: useradd [-u uid] [-g group] [-d home] [-s shell] 用戶名 
         -u,用戶ID,用戶ID是給系統使用的,而用戶名是給用戶使用的,二者是一一對應的關係
         -g,用戶所屬的用戶組標識
         -d,以已存在的目錄做爲用戶的家目錄
         -s,定義shell

     示例:

// 添加用戶標識 garfield
# useradd garfield

     並經過查看/etc/passwd、/etc/shadow和/etc/group文件內容,檢查用戶是否建立成功。具體內容以下

     

     注意:在建立用戶時,系統會根據/etc/login.defs和/etc/default/useradd文件的內容對新用戶作基本設置。

     /etc/login.defs文件內容:

     

     /etc/default/useradd

     

     SKEL選項是指定用戶家目錄內容是從`/etc/skel`複製過來的。

 2. 設置密碼

   命令: passwd 用戶名 密碼 

 3. 啓用、禁用賬號

// 禁用
# usermod -L 用戶名
// 啓用 
# usermod -U 用戶名

啓用禁用實質就是在`/etc/shadow`文件中該用戶名對應的記錄上,在用戶密碼前刪除、添加!(感嘆號)來實現。

 4. 其餘

// 將用戶添加到用戶組
usermod -G 用戶組名 用戶

// 改變用戶的用戶組
usermod -g 用戶組名 用戶

// 修改用戶名
usermod -l 新用戶名 舊用戶

// 刪除用戶
userdel 用戶名

 

6、管理用戶組                                

// 添加用戶組
groupadd [-g gid [-o]] [-r] [-f] 用戶組名

// 修改用戶組名稱
groupmod -n 新用戶組名 舊用戶組名

// 刪除用戶組
groupdel 用戶組名

 

7、用戶、用戶組的配置文件                              

1. /etc/passwd,任何用戶均可以讀取該文件的內容。存放各個用戶的用戶名稱、加密後的密碼(若操做系統採用了shadow技術,則用加密密碼在/etc/shadow文件中,這裏用x或\*表示)、用戶ID(一個用戶ID能夠對應多個用戶名,每一個用戶名擁有獨立的口令、家目錄和shell,但系統會認爲這些用戶名是同一個用戶。0是超級用戶,1~99系統保留,100開始是普通用戶,默認從500建普通用戶。總體取值範圍是0~65535)、用戶組ID(對應/etc/group中的一條記錄)、註釋性描述字符串、家目錄、shell程序路徑<br/>

僞用戶(psuedousers):shell程序路徑爲空或爲/sbin/nologin,主要用於方便系統管理、知足相應系統進程對文件屬性的要求。

僞用戶以下:

  bin,擁有可執行的用戶命令文件
  sys,擁有系統文件
  adm,擁有帳號文件
  uucp,UUCP使用
  lp,lp或lpd子系統使用
  nobody,NFS使用

可經過設置"shell程序路徑"爲某程序,限制某用戶進入系統後僅能執行該程序,程序執行結束則退出系統。

2. /etc/shadow,僅超級用戶能夠查看和修改,由pwconv命令根據/etc/passwd中的數據自動生成,記錄爲一對一關係。記錄格式爲:用戶名、加密後的密碼(固定長度爲13個字符,空則表示沒有密碼,若含\./0-9A-Za-z的字符則沒法登陸)、最後修改密碼的時間(以距離1970年1月1日的天數來計算)、最小時間間隔(修改密碼的最小天數)、最大時間間隔(密碼有效天數)、警告時間(從系統開始警告用戶修改密碼到沒法登陸的天數)、不活動時間(用戶沒有登陸活動,但帳號仍保持有效的最大天數)、失效時間(用戶名的有效天數)

3./etc/group,存放用戶組名稱、用戶組加密後的密碼(空、\*或x表示沒有密碼)、用戶組ID、成員用戶名稱(成員用戶名稱間用,隔開)

 

8、總結                                        

  Linux的文件權限暫時瞭解到這裏吧,之後繼續深刻繼續補充!

  尊重原創,轉載請註明來自:http://www.cnblogs.com/fsjohnhuang/p/3999224.html ^_^肥仔John

 

9、參考                                        

http://blog.csdn.net/fan_zhen_hua/article/details/2050009http://blog.csdn.net/xsz0606/article/details/5256719http://blog.chinaunix.net/uid-20671208-id-3488852.htmlhttp://www.cnblogs.com/huangzhen/archive/2011/08/22/2149300.htmlhttp://blog.csdn.net/liqfyiyi/article/details/7742775http://os.51cto.com/art/201003/187591.htmhttp://os.51cto.com/art/201003/187572.htm

相關文章
相關標籤/搜索