Linux下对文件权限的管理
一、基本含義
1.文件權限存在的意義
(1)文件權限是系統最底層的安全機制組成之一
(2)權限設定的作用是保證文件可以被可用的用戶做相應的操作
2.文件權限的查看
(1)ls -l file 查看文件的屬性
(2)ls -ld dir 查看目錄的屬性
首先建立一個目錄test,ls -ld查看該目錄的屬性
然后在test目錄下建立一個文件file,ls -l查看文件的屬性
(3)ll file =ls -l file
(4)ll -d dir =ls -ld dir
注:ll是個別名,是對ls -l的縮寫
3.文件權限的讀取
" - rw- r-- r–. 1 root root 0 Jan 1 09:24 file"
<1>- 文件類型
<2> -rw- r-- r-- 文件權限
1.【u】文件的擁有者對文件可以做的 2.【g】文件的組對文件可以做的 3.【o】其他人可以對文件做的<3>‘1’
對文件:文件的內容被系統記錄的次數,也是刪除時要刪除的次數 即文件的硬鏈接個數
對目錄:目錄中子目錄的個數
<4> root
文件所有人 即文件是誰建立的
<5>root 文件所有組
<6> 0
對文件:文件大小
對目錄:目錄中子文件元數據的大小 (matedate可以理解為文件的屬性)
一個空目錄的默認大小為6
<7>文件最后一次被更改的時間(文件內容)不包含文件屬性被修改的時間
<8>文件名
二、對權限的管理
1.管理屬性 改變文件的所有人和所有組
例:先切換到mnt/中即對應的路徑下,并建立一個目錄test以及五個文件file1-file5
在test下建立文件file1-file3
執行watch -n 1 ls -lR /mnt/監控/mnt/下文件及目錄屬性的變化
在當前界面重新打開一個shell進行操作
(1)chown username file|dir 改變文件的用戶
(2)chgrp groupname file|dir 改變文件的組
注:對目錄的操作默認情況下命令的操作只限于本身,其里面的內容是不會改變的
#####遞歸 -R 更改目錄本身和里面所有內容的命令
(3)chgrp -R groupname dir
(4)chown -R username dir
(5)chown username:groupname file|dir 同時改變所有人和所有組用:隔開
(6)chown -R username:groupname dir
(7)chown 和 chgrp 后都可以加多個文件名同時改變多個文件所有人或所有組
2.如何改變文件的權限
(1). 對權限的理解
權限分為 r w x 前十位分為三部分
① r :對文件而言r表示是否可以查看文件的內容 cat file
對目錄來說表示是否可以查看目錄中有什么子文件或者子目錄 ls dir
<1> 先去掉文件file1 的所有權限
<2>超級用戶下vim編輯文件,由于沒有任何權限所以保存的時候要加!強制退出保存(注: 所有的權限限制對超級用戶都是沒有用的)
<3>超級用戶下cat查看此文件的內容仍然是可以查看的
<4>切換到student用戶下編輯此文件,系統會提示沒有權限
<5>在student用戶下查看此文件內容系統仍會提示沒有權限,如圖
② w: 對文件來說是是否可以更改i文件的內容
對目錄可寫就是可以更改目錄或目錄中文件的元數據,元數據就是屬性
<1>首先刪除其他文件方便觀察,新建一個目錄dir,這個目錄的所有者對目錄有讀寫和執行的權利,所以可以對文件和目錄進行移動(文件或目錄的移動是一個重命名的過程)
<2>切換到student用戶下,執行之前的操作系統會提示沒有權限
<3>給目錄dir的其他用戶寫的權限
<4> 再將file1移動到dir下便可成功(重命名的過程)
③x: 對文件:是否可以通過文件的名稱調用文件內記錄的程序
對目錄:是否可以進入目錄
<1>先賦給文件file1滿權限,在文件中寫入date命令,并cat查看文件內容
<2> ./file1 執行此文件
(2).更改權限的方式
<1>chmod <u|g|o><+|-|=><r|w|x> file|dir
例1. chmod u+x /mnt/file1 (增加文件所有人對文件執行的權限)
例2. chmod g+w /mnt/file1 (增加文件所有組對文件寫的權利)
例3. chmod o-r file1 (去掉其他用戶對此文件讀的權利)
例4. chmod u=rx /mnt/file1 賦予mnt/下的file1讀和執行的權限
例5.chmod ugo+x /mnt/fiel2 (給/mnt/file2文件的所有人,所有組和其他人都具有執行此文件的權限)
例6. chmod u-r,g+w,o=x mnt/file3
例7. chmod -r /mnt/file4 (去掉每一位對此文件讀的權利)
注:u g o的含義
| g | 文件所有組 |
| o | 其他用戶 |
| “-” | 表示去掉 |
| “=” | 表示設定,文件設定的屬性,會覆蓋掉之前的權限 |
相同的可以合并,不同的用","隔開
<2> chmod xxx file (xxx表示三個數字)
| w | 2^1=2 |
| x | 2^0=1 |
按位計算 ,滿權限 777 ,無權限000,對應的位置沒有字符 * 0 有 字符* 1
| 6 | rw- |
| 5 | r-x |
| 4 | r- - |
| 3 | -wx |
| 2 | -w- |
| 1 | - -x |
| 0 | - - - |
例1.chmod 777 file1 = chmod ugo=rwx (滿權限)
例2. chomd 740 file2 = chmod u=rwx,g=r,o=- - - file2
3.umask
umask 系統建立文件時默認保留的權力
作用: 查看系統的預留權限 , umask 可控,預留越多系統越安全
1) 使用方式: umask 077 臨時設定系統預留權限為077
在當前shell下建立一個文件,此文件的權限是600(文件會默認回收執行權限,即所有文件的權限每一位自動-1)
關閉當前shell,新打開一個shell并建立新的文件,其權限會恢復默認
注: 當前shell關閉umask會還原 系統內存等資源會被回收,對umask的設定寫在文件下才會永久被保存
2)永久更改umask
<1> vim /etc/bashrc ###etc/bashrc 是shell的配置文件(改變設備的預留權限)
if [ $UID -gt 199 ] && [ " id -gn" = " id -un " ]; then
umask 002 普通用戶的umask
else
umask 022 超級用戶的umask
fi
如圖所示:1>普通用戶的umask為002,超級用戶的umask為022
2>如圖,修改之后將普通用戶的umask設為070,超級用戶的設為077
3>設置完之后:wq保存退出,此時查看超級用戶umask沒有改變,是因為沒有更新文件
4> 程序初始化 source /etc/bashrc 后再次查看發現umask變了
<2> vim etc/profile 編輯系統配置文件/etc/profile(改變系統預留權限)
if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
umask 002 普通用戶的umask
else
umask 022 超級用戶的umask
fi
例:1>vim etc/profile 編輯后退出保存
2>程序未初始化前查看umask
3> source /etc/profile 程序初始化后查看umask改變
4>切換到普通用戶后查看
注:程序初始化的作用是讓更改立即生效
5>cd /mnt/切換到這個目錄下,新建一個文件和目錄測試
注:因為設置的普通用戶umask為055,所以新建立目錄的權限為777-055=722, 即rwx-w- -w-,而文件的權限會默認-1,因為文件默認保留執行權限
6>切換到超級用戶建立文件和目錄
注:umask 為042,新建文件和目錄的權限為777-042=735 ,即rwx-wxr-x,同樣文件的默認權限如果有執行權限x的話會被去掉
4.特殊權限
1)sticky 粘制位
作用:只針對目錄生效,當一個目錄上有sticky權限時,在這個目錄中的文件只能被文件的所有者刪除
用法:
chmod o+t dir
chmod 1777 dir
只針對目錄 在公共目錄上用,只能對自己的文件刪除,不可以刪除別人的文件
例:1>先建立用戶tom,harry,leo ,他們分別屬于組shengchan ,caiwu 和jishu
建立一個公共目錄/pub/,任何人都可以在這個目錄上讀寫和執行
2>watch -n 1 ls -lR /pub/監控這個公共目錄的變化
3>切換到用戶tom下,建立一個文件file1
4>退出tom用戶,切換到用戶harry下,建立一個文件file2
5>用戶harry刪除tom建立的文件file1,這時時可以刪除的
6>對目錄/pub/進行以下操作,其他用戶位的x被換成了t
7>再次切換到用戶tom,建立新的文件file0,file1
8>tom刪除自己建的文件file1可以刪除,但是刪除harry建的文件file2 系統會提示:不能刪除,操作不被允許
2)sgid 強制位
作用:只針對二進制可執行文件,當文件上有sgid時任何人執行此文件產生的進程都屬于文件的組
對目錄:當目錄上有sgid權限時任何人在此目錄中建立的文件都屬于目錄的所有組
注:sgid 任何用戶在執行這個文件時都屬于這個文件的組,用完后身份恢復
只對新的文件有效,已經存在的文件只能通過chgrp -R更改
用法:
chmod g+s file|dir
chmod 2755 file|dir
例:1>此命令觀察進程比較直觀所以創建一個watch進程,查看/bin/watch的屬性
創建一個watch進程
2> ps ax -o comm,user,group查看這個進程的用戶和組
可以看到watch進程的用戶和組都是root
3>將/bin/watch文件的組改為student
4>關閉上一個進程新建一個,查看進程信息,雖然改變了文件的組,但進程中顯示的認識執行這個進程的用戶的組
5>切換到tom用戶下重復以上操作
查看進程信息,watch進程的用戶和組都是tom的
6>超級用戶下chmod g+s /bin/watch ,用戶組位的x變成s
7>再次創建進程并查看進程信息,此時進程中用戶的組變成了/bin/watch 這個文件的組,即就是任何人執行此文件時產生的進程都屬于更改文件的組
3)suid 冒險位
只針對二進制可執行文件
當文件上有suid時任何人執行這個文件中的程序產生的進程都屬于文件的所有 人
(任何用戶執行這個動作時都是這個文件的所有人,用完后恢復自己的身份)
用法:
chmod u+s file
chmod 4755 /bin/watch
例:1>超級用戶下chmod u+s /bin/watch,文件權限用戶位的x變成了s
2>刷新進程并查看進程信息,tom用戶創建的進程這時進程的用戶變成了root,即tom在執行/bin/watch這個文件時他的身份變成了root,也就是/bin/watch 這個文件的所有人
注:(在同時執行chmod g+s和chmod u+s時應該是chmod 6755 /bin/watch 因為二者同時存在)
5.權限列表acl
1) 存在的意義
作用讓特定的用戶對特定的文件擁有特定的權限
普通權限只能滿足某一類情況,特定人有特定需求時用權限列表
2) acl列表的查看
<1>ls -l 查看
權限后有+表示權限列表開啟
只要設定了權限列表系統顯示的就是假的權限,是錯誤的,應該利用權限列表查看真的權限
<2>getfacl
getfacl file 查看acl開啟后的文件的權限
普通用戶不能訪問超級用戶的桌面,做實驗是需要在/mnt/下
權限列表雖然空但仍然開著
3 )acl列表的管理
<1>getfacl file
<2>setfacl -m u:username:rwx file 設定指定用戶對文件的權限
<3>setfacl -m g:groupname:rwx file 指定組對文件的權限
<4>setfacl -x u:username file 從acl列表中刪除該用戶
<5>setfacl -x g:groupname file 從acl列表中刪除這個組,即撤銷這個組對文件的權限
<6>setfacl -b file 關閉權限列表
注:在權限列表為空,沒有刪除權限列表是查看文件的屬性,文件的權限后會有+
setfacl -b file 關閉權限列表后查看文件屬性,文件權限后的+消失了
一個文件的權限列表關閉一次后之前設定的內容會清空
4)mask值
(1)在權限列表中mask表示能生效的權限值
(2) 當使用chmod減小開啟acl的文件權限時mask值會發生改變
當文件的權限出現+時,用chmod 改變文件權限時會影響mask權限,此時應該用
例:1.分別指定tom和harry的權限,并ls -l查看文件的權限,原來文件用戶組(g)位的權限變成了mask的權限
2.chmod g-rx file ,去掉g位讀和執行的權限后,mask的權限會改變,之前指定的用戶擁有的權限系統會提示:有效的只有w即寫的權限,沒有讀和執行的權限
(3)恢復mask的權限兩種方法:
<1>chmod g+rx file ,因為mask的權限一般展示在group原來的位置
<2>setfacl -m m:rwx file 恢復mask的權限
5)acl的默認權限設定
(1)acl默認權限只針對目錄設定
(2)acl權限只針對設定完成之后新建立的文件或目錄生效,而已經存在的文件是不會繼承默認權限的
(3)setfacl -m d:u:username:rwx /mnt/ dir,指定用戶對目錄的默認權限
例:1.新建一個目錄test1 ,并在test1目錄下建立文件file1 file2 file3
2.指定tom用戶對這個目錄有讀寫和執行的權利,切換到tom用戶查看授權之前建立的文件file1 ,系統會提示沒有權限
3.對tom指定權限后超級用戶再建立一個新的文件file7
4.tom用戶對新建文件file7進行查看
(4)setfacl -k /mnt/file 刪除acl默認權限的設定
例:超級用戶下刪除之前設定的默認權限
超級用戶新建文件file9
tom用戶查看文件file9失敗,但查看刪除權限之前建立的file8是可以的
默認權限對目錄本身不生效
總結
以上是生活随笔為你收集整理的Linux下对文件权限的管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDMI相关
- 下一篇: linux 其他常用命令