1. 程式人生 > >Linux文件權限與目錄配置

Linux文件權限與目錄配置

文件 目錄 權限

一 :使用者與群組

1 文件擁有者(user):是這個文件的所有者,有對文件的權限
2 群組(group):在其群組之內的用戶具有訪問文件的權限
3 其他(other):
4 Linux用戶身份與群組記錄的文件
默認情況下,超級用戶和七班用戶的相關信息都記錄在/etc/passwd目錄下,密碼則記錄在/etc/shadow文件下,此外Linux所有組名都記錄在/etc/group中,

二 文件權限概念:

1 Linux文件屬性

ls是list的意思,重點在顯示文件的文件名與相關屬性,而選項[-al]則表示列出所有文件詳細的權限與屬性,包含隱藏文件,第一個字符是.
[root@localhost ~]# ls -al

總用量 76
d r-xr-x---. 22 root root 4096 1月 28 16:02 .
文檔類型 文檔權限 鏈接數 文檔所屬者 文檔所屬組 文檔容量 最後修改時間 文檔名
drwxr-xr-x. 18 root root 4096 1月 28 15:56 ..
drwxr-xr-x. 3 root root 67 1月 28 10:58 aaa

文檔類型:
d 則是目錄

  • 則是文件
    l 則是鏈接文檔
    b 則是裝置文件中可供存儲的接口設備(可隨機存取裝置)
    c 則是表示文裝置文件裏面的串行端口設備,如鍵盤、鼠標

文檔權限:
以三個為一組,且均為[rwx] 其中r表示可讀(read),[w]表示可寫(write),[x]表示可執行(execute),參數的位置不會發生改變,如果沒有權限,則會出現一個[-]而已。

第一組為文件擁有者可具備的權限
第二組為加入此組之賬號的權限
第三組為非本人且沒有加入本群組之其他賬號權限

其中r為4 w為2 x為1

連接數:表示有多少檔名鏈接到此節點(i-node)
每個文件都會將他的權限與屬性記錄到文件系統的i-node中,每個檔名都會鏈接一個i-node。

文檔所有者:這個文件的擁有者賬號、

文檔所屬組:這個文件的所屬群組

文檔容量:默認單位為bytes;

想要顯示完整時間格式,可以使用ls -l --full-time

[root@localhost ~]# ls -l --full-time
總用量 0
drwxr-xr-x. 3 root root 67 2018-01-28 10:58:15.199512334 +0800 aaa

文檔檔名:
如果檔名之前是[.]則代表是隱藏文件,

ls 文檔擴展:
使用 ls --help
man ls
info ls
可以查看其基礎語法

文件權限的重要性
1 數據保護的功能:有關於系統服務的文件通常只有root才能讀寫或者執行,root基本上不受系統的權限限制,所以無論文件的權限時什麽,預設root都可以有存取功能;
[root@localhost ~]# ll /etc/shadow
----------. 1 root root 1322 1月 24 11:32 /etc/shadow
2 團隊開發或數據共享的功能:
3 權限設定不妥當有巨大的危害性

2 如何改變文件屬性與權限

chgrp :改變文件所屬群組
chown:改變文件擁有者
chmod:改變文件的權限,suid,sgid,sbit等

-R :表示進行遞歸的持續變更,亦及聯同次目錄下的所有文件目錄都更新成為這個擁有者或擁有組。

chown 可以同時改變擁有者和擁有組:[chown user.group file]在擁有者與群組之間加上小數點(.)也可以。也可使用:來隔開擁有者和所屬群組。

chown也可以用於單獨修改群組,chown .admin file

改變權限
A 數字類型改變文件權限
Linux文件的基本權限有9個,分別是owner / group /others 三種身份各有自己的read/write/execute權限,
r-4
w-2
x-1
每種身份各自的三個權限(r/w/x)分數是需要累加的,
rwx=7
r-x=5
r--=4
--x=1

符號類型改變文件權限
三種身份可以使用u,g,o分別表示user,group,other,此外a代表all也是全部的身份。

技術分享圖片

[root@localhost ~]# ll aaa.py
-rw-r--r--. 1 root root 0 1月 25 13:49 aaa.py
[root@localhost ~]# chmod u=rwx,g=rwx aaa.py
[root@localhost ~]# ll aaa.py
-rwxrwxr--. 1 root root 0 1月 25 13:49 aaa.py
[root@localhost ~]# chmod u-x,g-x aaa.py
[root@localhost ~]# ll aaa.py
-rw-rw-r--. 1 root root 0 1月 25 13:49 aaa.py
[root@localhost ~]# chmod a=rwx aaa.py
[root@localhost ~]# ll aaa.py
-rwxrwxrwx. 1 root root 0 1月 25 13:49 aaa.py

[root@localhost ~]# chmod 111 aaa.py
[root@localhost ~]# ll aaa.py
---x--x--x. 1 root root 0 1月 25 13:49 aaa.py

3 目錄與文件權限的意義:

1 權限對文件的重要性
文件是實際含有數據的地方,包括一般文本文件、數據庫內容文件、二進制可執行文件。
r(read):可讀取一些文件的實際內容,
w(write):可以編輯、新增或是修改該文件的內容
x(eXecute):該文件具有可以被系統執行的權限。
我們的文件是否能夠被執行,則是藉由是否具有[x]這個權限來決定的,跟文檔名是沒有關系的。

w 這個權限不代表具備刪除這個文件的能力,文件的權限主要是針對文件的內容而言的

2 權限對目錄的重要性
目錄主要的內容是在記錄文件名列表,文件名與目錄有強烈的關聯。
r(read contents in directory)
表示具有讀取目錄結構列表的權限,所以當你具有讀取一個目錄的權限時,表示你可以查詢該目錄下的文件名數據。所以你可以使用ls這個指令將該目錄的內容列出來

w(modify contents of direcoty):
表示具有異動該目錄結構列表的權限
1 建立新的文件與目錄
2 刪除已經存在的文件與目錄
3 將已存在的文件或目錄進行更名
4 搬移該目錄內的文件、目錄位置

x(access directory)
目錄的x代表的是用戶能否進入該目錄成為工作目錄。及能否cd 進去的權限,如果你在某目錄下不具有x的權限,那麽你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,即使你有該目錄的r或w的權限。
技術分享圖片

4 特殊權限:

1 o+t 權限:sticky,粘制位
效果:只針對與目錄,當目錄上有o+t的權限時,所有用戶在該目錄下均可創建文件,但只有文件的所有人和root用戶可以刪除該目錄下的文件
設定方式:
chmod o+t 目錄
chmod 1777 目錄
2 u+s 權限:suid 冒險位
效果:只針對於二進制可執行文件,該命令發起的程序是以該命令所有人的身份去執行的
chmod u+s 二進制可執行文件
chmod 4755 二進制可執行文件
3 g+s權限:強制位
效果:針對二進制可執行文件:該命令發起的程序是以該命令所有組的身份去執行,針對目錄,目錄信件文件的所屬組與該目錄的所屬組保持一致
設定方式:
chmod g+s 文件|目錄
chmod 2755 文件|目錄

5 Linux文件種類與擴展名

1 文件種類

1 正規文件(regular file)
第一個字符為-
分為:純文本文檔(ASCII)、二進制文件(binary)、數據格式文件(data)
2 目錄(directory)
第一個參數為[d]
3鏈接檔,類似於Windows下的快捷方式。第一個屬性是l(L的小寫)
4 設備與裝置文件(device)
分為:區塊設備檔( block)第一個屬性是b 字符設備檔(character)第一個屬性是c
5資料接口文件(sockets)
這種類型的文件通常被用在網絡上的數據承接了。第一個屬性是s
6 數據輸送文件(FIFO ,pipe)
FIFO也是一種特殊文件類型,他的主要目的是在解決多個程序同時存取一個文件所造成的錯誤問題,FIFO的第一個屬性是p

2 文件擴展名

在Windows地下,能被執行的文件擴展名通常是.com,.exe,.bat等,而在Linux下,只要你的權限中有x的話,及代表該文件具有可以被執行的能力
具有可執行權限好人具有可執行的程序代碼不同,
Linux地下常用的擴展名:
1.sh shell的腳本文件
2
Z,tar,tar.gz,.zip,.tgz:經過打包壓縮的文件
3 .html,.php:網頁相關的文件,分別代表HTML和PHP語法。

3 Linux文件長度限制

單一文件或目錄的最大容許文件名為255bytes,以一個ASCII英文占一個bytes來說,則大約可達255個字符長度,若是以每個中文字占用2bytes來說,最大檔名就是大約128個中文子。

4 Linux文件名的限制

盡量避免一些特殊字符:
*? < > : ; @ $ 等

三 Linux 目錄配置

1 Linux 目錄配置的依據--FHS

1 filesystem hierarchy standard(FHS)

目的:讓使用者可以了解到已安裝軟件通常放置於那個目錄下。
FHS 的重點在於規範每個特定的目錄應該要放置什麽樣子的數據。
技術分享圖片

FHS 將目錄定義成為四種交互作用的形態。
1 可分享的:可以分享給其他系統掛載使用的目錄,所以包括執行文件與用戶的郵件等數據,是能夠分享給網絡上其他主機掛載用的目錄
2 不可分享的:裝置文件或程序有關的socket,
3 不變的:函式庫,文件說明文件,系統管理員所管理的主機服務配置文件等。
4 可變動的:經常改變的數據,例如登錄文件等

事實上FHS 針對目錄樹架構僅定義出三層目錄下應該放置什麽數據,
/(/root,根目錄):與開機系統有關
/usr(Unix software resource) :與軟件安裝/執行有關
/var(variable):與系統運行過程有關。

2 根目錄(/)的意義與內容

根目錄是系統中最重要的一個目錄,不但所有的目錄是由根目錄衍生出來的,同時根目錄也與開機/還原/系統修復等動作有關。
FHS 標準建議:根目錄(/)所在的分區槽應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區槽內,保持根目錄越小越好。
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

3 /usr的意義與內容:

usr:Unix software resource 的縮寫,也就是[Unix 操作系統軟件資源]所放置的目錄,而不是用戶的數據。
技術分享圖片
技術分享圖片

4 /var的意義與內容

/var 就是在系統運作後才會漸漸占用硬盤容量的目錄,因為/var目錄主要針對常態化變動的文件,包括快取(cache)、登錄檔(log file)以及某些軟件運行所產生的文件
技術分享圖片

2 目錄樹

在Linux中,所有文件與目錄都是由根目錄開始的,那是所有目錄與文件的源頭。
目錄樹[directory tree]特性:
目錄樹的起始點為根目錄(/,root)
每一個目錄布置能使用本地端的partition的文件系統,也能使用網絡的filesystem。
每一個文件在此目錄樹中的文件名都是獨一無二的(包含完整路徑)
[root@localhost ~]# ls -l /
總用量 32
lrwxrwxrwx. 1 root root 7 12月 27 19:18 bin -> usr/bin
dr-xr-xr-x. 3 root root 4096 12月 27 11:52 boot
drwxr-xr-x. 20 root root 3300 1月 28 15:57 dev
drwxr-xr-x. 154 root root 8192 1月 28 15:56 etc
drwxr-xr-x. 3 root root 16 1月 24 11:54 ftp
drwxr-xr-x. 3 root root 18 12月 27 19:40 home
lrwxrwxrwx. 1 root root 7 12月 27 19:18 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 12月 27 19:18 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 3月 13 2014 media
drwxrwxrwx. 2 root root 6 3月 13 2014 mnt
drwxr-xr-x. 4 root root 30 1月 28 11:00 opt
dr-xr-xr-x. 493 root root 0 1月 28 15:55 proc
dr-xr-x---. 22 root root 4096 1月 28 16:02 root
drwxr-xr-x. 44 root root 1360 1月 28 15:57 run
lrwxrwxrwx. 1 root root 8 12月 27 19:18 sbin -> usr/sbin
drwxr-xr-x. 3 root root 19 1月 25 16:27 srv
dr-xr-xr-x. 13 root root 0 1月 28 15:56 sys
drwxrwxrwt. 28 root root 4096 1月 28 19:58 tmp
drwxr-xr-x. 13 root root 4096 12月 27 19:18 usr
drwxr-xr-x. 25 root root 4096 1月 28 15:56 var
技術分享圖片

查看目錄架構:
tree
[root@localhost ~]# yum -y install tree
[root@localhost ~]# tree /root
/root
├── aaa
│?? ├── repodata
│?? │?? ├── 03897b8e5f471bc4672119dd2e03c6119f369967b2a23e92fdf6cb7ec1862af5-other.xml.gz
│?? │?? ├── 0d6b7db64a801b5d1a1b40041ba7d365c527cf772fdc2344afed26ce2db5df24-filelists.xml.gz
│?? │?? ├── 550a2eb61507b66a86da417d7bf53fcbe9ddcdfe7994a9f94ce88e6ae0672de4-primary.sqlite.bz2
│?? │?? ├── be88fdfd3dbb63e730cb9d10f28121ccc08ff79b7d65d43f71edf4b79e7888a6-other.sqlite.bz2
│?? │?? ├── dcb3565731ea14adb4ea46231ff3147609e88d570fa4e1024514d19fc2a16b09-filelists.sqlite.bz2
│?? │?? ├── e1e31c6ee42ae9cd189a3e8003869a3971ebc3e1826b444dfdcb640e9df60175-primary.xml.gz
│?? │?? └── repomd.xml
│?? └── wps-office-10.1.0.5672-1.a21.x86_64.rpm
├── aaa.py
├── \345\205\254\345\205\261
├── \346\250\241\346\235\277
├── \350\247\206\351\242\221
├── \345\233\276\347\211\207
├── \346\226\207\346\241\243
├── \344\270\213\350\275\275
├── \351\237\263\344\271\220
└── \346\241\214\351\235\242

10 directories, 9 files

3 絕對路徑與相對路徑:

絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱,
相對路徑:相對於目前路徑的文件名寫法
[root@localhost ~]# cd /var/log/ 絕對路徑
[root@localhost log]# cd ../log 相對路徑
.:代表當前目錄,也可以使用./來表示
..:代表上一層目錄,也可以../來表示

Linux文件權限與目錄配置