3.2權限管理

文件的權限

文件權限是指對文件的訪問權限, 包括對文件的讀、寫、執行等操作。它和文件的共享、保護、保密相互聯繫, 密切相關。Linux 爲保護每個用戶個人的文件不受侵犯, 提供了文件權限的管理機制。該機制使一個文件歸一個特定的用戶所有, 該用戶有權對自己的文件進行存取等操作, 也可以設置其它用戶的操作權限。Linux 的每個文件和目錄都包含有決定誰能訪問和如何訪問的權限,

文件權限相關的用戶分類

執行“ls –l”,我們會看到以下內容

clip_image002

clip_image004

基本權限分爲讀、寫、執行三種權限, 依次用 r、w、x 表示字符形式, 用 4、2、1 表示數字形式。由於目錄是特殊的文件, Linux 的權限管理可以區分爲對文件和目錄的兩種操作。

讀權限: 對文件是瀏覽其內容; 對目錄瀏覽其內容, 即列出其下的文件和子目錄。

寫權限: 對文件是修改和刪除; 對目錄是創建、刪除、重命名其下的文件和子目錄。

執行權限: 對文件是允許執行; 對目錄是允許進入、搜索遍歷該目錄。

使用相關命令管理文件權限

(1)chmod( Change mode) 改變文件或目錄的存取權限。使用者爲文件屬主或 root。

chmod

u

g

o

a

+(加入)

-(除去)

=(設置)

r

w

x

文件或目錄


例:取消組用戶和其他用戶對文件users的讀取權限

clip_image005


數字設定法

語法: chmod n1n2n3 文件名列表

使用三個數字分別代表用戶(n1),同組用戶(n2),其他用戶(3)的訪問權限

每個數字模式有不同的權限所對應的數字相加得到一個表示訪問權限的八進制數字

clip_image007


例:所有組用戶和其他用戶對users只設置讀和執行權限沒有寫的權限

clip_image009


(2)chown(change owner)使用者爲文件的當前屬主或 root。

功能: 更改每個<文件>的<所有者>、<所屬組>。

語法: chown 所有者 [:[組]] 文件; 或chown :組 文件...

舉例:

chown user:grp text

該命令將 text 文件的屬主和屬組分別改爲user和grp

chown :smile text

該命令是將text文件的屬組改爲smile

(3)chgrp (change group) 使用者爲文件屬主( 必須屬於兩個以上的組) 或 root。

功能: 變更文件或目錄的所屬羣組。

語法: chgrp 組 文 件..;

chgrp user test

該命令是將test的屬組改爲user

acl權限

設定 ACL 權限:setfacl 選項 文件名

clip_image011

查看 ACL 權限:

刪除指定用戶的 ACL 權限

setfacl -x u:用戶名文件名

刪除指定用戶組的 ACL 權限

setfacl -x g:組名 文件名

舉例:

給用戶設定 ACL 權限:setfacl -m u:用戶名:權限指定文件名

查看 ACL 權限:getfacl 文件名

clip_image013


給用戶組設定 ACL 權限:setfacl -m g:組名:權限指定文件名

clip_image015


特殊的權限

共有三個特殊權限爲,分別爲:

suid,設置用戶id,顯示在擁有者執行權限位

sgid,設置組id,顯示在所屬組執行權限位

sticky,粘附位,顯示在其他用戶執行權限位

設置:chmod 4/2/1644 file/dir

使用 ls –l 命令查看時,體現在執行權限x上,

suid:若文件所屬用戶對文件有x權限,則加上setuid後,顯示s,否則顯示S

sgid:若文件所屬用戶對文件有x權限,則加上setuid後,顯示s,否則顯示S

Sticky:若文件所屬用戶對文件有x權限,則加上setuid後,顯示t,否則顯示T

如:

例:設置suid權限位

就是讓普通用戶可以以root用戶的角色運行只有root用戶或賬號才能執行的程序或命令。

比如passwd命令,普通用戶可以運行此命令修改自己的密碼,但此命令實際上修改的是/etc/passwd文件,此文件只有root用戶有修改權限


例:設置setgid權限位

對目錄設置setgid

setgid對目錄設置後,任何用戶在該目錄下創建文件的屬組都是該目錄的屬組。

#groupadd test 創建組test

#mkdir /home/dir 創建目錄

#chmod o+w /home/dir 使其他用戶可創建

#chgrp test /home/dir 修改目錄屬組爲test

#chmod g+s /home/dir 修改目錄setgid位

# ls –ld /home/dir 查看目錄權限

以後在/home/dir下新建文件和目錄的屬組都是/home/dir的屬組。


例:設置sticky位

粘附位,主要用來避免其他用戶對文件的誤操作,

粘着位只對目錄有效,普通用戶要對該目錄擁有w和x權限,即普通用戶可以在此目錄擁有寫入權限。如果沒有粘着位,因爲普通用戶擁有w權限,所以可以刪除此目錄下所有文件,包括其他用戶建立的文件。一但賦予了粘着位,除了root可以刪除所有文件,普通用戶就算擁有w權限也只能刪除自己建立的文件,但是不能刪除其他用戶建立的文件。

新創建兩個用戶 aa,bb,併爲其設置密碼123

以root用戶創建文件file1,切換到aa用戶 創建file2再切換到bb用戶

刪除file1和file2 都沒有權限


umask( 一般只對基本權限進行設置)

umask命令生成的默認掩碼是告訴系統當創建一個目錄和文件時不應該賦予那些值。

umask - S 顯示的掩碼值;

clip_image017


在 Linux 中 root 的 u-mask 的默認值爲 022:

clip_image019


通用戶的默認值爲 002:

clip_image021

如果想要改變umask值,只要使用umask命令設置一個新的值即可:

$ umask 002

確認一下系統是否已經接受了新的u m a s k值:

$umask

002

$touch testfile

$ls -l testfile

rw- rw- r—

用umask 命令設置的掩碼的有效期爲在一次使用終端的過程中從設置開始到下一次的設置結束。系統的默認umask 值, 一般是在/etc/bashrc 或/etc/profile 文件中設置的, 每個用戶在登錄時都會引用該文件, 每次啓動終端時 umask 均爲默認值。如希望改變所有用戶的umask, 可以在該文件中加入相應的條目。如希望永久性的設置自己的 umask, 則可以把它放在自己主目錄下的 bashrc 或.profile 或 bash_profile 文件中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章