日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下对文件权限的管理

發布時間:2024/3/12 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>- 文件類型

"-" 空文件或者文本 l 軟鏈接相當于快捷方式 s 套接字(socket一個程序對外加劉的接口,通過他可以和程序內部交流) d 目錄 b( block塊設備 dev下的sdb1對U盤文件進行管理,文件所管理的是一個塊設備)c (字符設備,顯示字符的文件就是一個字符設備)

<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進行操作

注:遞歸顯示 ls - lR 顯示目錄下的所有,所有人所有組的的東西只能超級用戶來分配, 誰建立的東西就屬于誰,要更改的用戶和組必須存在

(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的含義

u文件的所有人
g文件所有組
o其他用戶
“+”表示增加
“-”表示去掉
“=”表示設定,文件設定的屬性,會覆蓋掉之前的權限

相同的可以合并,不同的用","隔開

<2> chmod xxx file (xxx表示三個數字)

r2^2=4
w2^1=2
x2^0=1

按位計算 ,滿權限 777 ,無權限000,對應的位置沒有字符 * 0 有 字符* 1

7rwx
6rw-
5r-x
4r- -
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

注: 1>.目錄有寫的權限,讀和執行是必須賦予的 2>.沒有明確說明的權力就表示回收 3>.默認權力為了安全 4>. 一個目錄的默認權力是755 5>.文件的默認權限是644 沒有執行權限 ,日志文件系統會默認把文件的執行權力回收,這是軟件本身決定的 6>.windows系統沒有linux系統穩定,前者系統下文件默認有執行權限 7>.不同的文件系統預留的權限是不同的

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> -gt表示大于<2> id -gn 表示用戶所有組<3>id -un 表示用戶的名字<4>if 條件語句的意思是:如果用戶的UID大于199,并且該用戶的組和用戶的名字相同,那該用戶的umask值就為002,否則其umask值為022普通用戶的UID大于1000,所以默認umask值為002超級用戶的UID是0,小于199,所以其默認umask是022

如圖所示: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>文件的類型由文件內容決定的,而不是文件名字 <2>進程屬于進程的發起者 <3>ps 進程掃描 ax 系統所有 -o 表示 參數的表達方式eg: ps ax -o comm,user,group

例: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開啟后的文件的權限

file: file 文件名稱owner: root 文件所有者group: root 文件所有組 user::rw- 文件所有者的權限user:tom:rwx 指定的用戶對該文件的權限group::--- 文件所有組的權限group:caiwu:r-x 指定組對文件的權限mask::rwx 能賦予用戶的最大權力,可改變,見注other::--- 其他人對文件的權限

普通用戶不能訪問超級用戶的桌面,做實驗是需要在/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下对文件权限的管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。