2.文件權限與目錄配置
本章同步視頻:https://edu.51cto.com/sd/e4874
2.1 三類用戶
2.2 文件權限
2.2.1 文件屬性
-rw-------. 1 root root 1416 Oct 28 2018 anaconda-ks.cfg
-rw-r--r--. 1 root root 1467 Oct 27 2018 initial-setup-ks.cfg
-rw-r--r--. 1 root root 550255 Oct 11 14:15 練習平臺試題說明書.pdf
2.2.2 chgrp - change group ownership
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
[root@localhost tmp]# ll aaa #ls -l的別名
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa #屬組爲root
[root@localhost tmp]# chgrp calf aaa #將屬組修改爲calf
-rw-r--r--. 1 root calf 0 Feb 26 19:58 aaa #屬組爲calf
[root@localhost tmp]# chgrp group1 aaa
chgrp: invalid group: ‘group1’ #組group1不存在
[calflyok@localhost ~]$ ll aaa
-rw-rw-r--. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ chgrp calf aaa
chgrp: changing group of ‘aaa’: Operation not permitted
2.2.3 chown - change file owner and group
chown [OPTION]... [OWNER][:[GROUP]] FILE...
-rw-r--r--. 1 root calf 0 Feb 26 19:58 aaa #擁有者爲root
[root@localhost tmp]# chown calf aaa
-rw-r--r--. 1 calf calf 0 Feb 26 19:58 aaa #擁有者變爲calf
-rw-r--r--. 1 calf calf 0 Feb 26 19:58 aaa
[root@localhost tmp]# chown root:root aaa
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chown own aaa
chown: invalid user: ‘own’ #own用戶不存在
[calflyok@localhost ~]$ ll aaa
-rw-rw-r--. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ chown root aaa
chown: changing ownership of ‘aaa’: Operation not permitted
2.2.4 chmod - change file mode bits
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
-rw-r--r--. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod 666 aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# ls -al bbb
drwxr-xr-x. 2 root root 4096 Feb 26 20:24 .
drwxrwxrwt. 9 root root 4096 Feb 26 20:24 ..
#父目錄不在修改範圍內
-rw-r--r--. 1 root root 0 Feb 26 20:24 ccc
[root@localhost tmp]# chmod -R 666 bbb
[root@localhost tmp]# ls -al bbb
drw-rw-rw-. 2 root root 4096 Feb 26 20:24 .
drwxrwxrwt. 9 root root 4096 Feb 26 20:24 ..
#父目錄不在修改範圍內
-rw-rw-rw-. 1 root root 0 Feb 26 20:24 ccc
chmod | u g o a | +(加入) -(除去) =(設定) | r w x | 檔案或目錄 |
[root@localhost tmp]# ll ll aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a+x aaa
-rwxrwxrwx. 1 root root 0 Feb 26 19:58 aaa
-rwxrwxrwx. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a-x aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
-rw-rw-rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod a=r aaa
-r--r--r--. 1 root root 0 Feb 26 19:58 aaa
-r--r--r--. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod u+wx,o=rw aaa
-rwxr--rw-. 1 root root 0 Feb 26 19:58 aaa
-rwxr--rw-. 1 root root 0 Feb 26 19:58 aaa
[root@localhost tmp]# chmod o= aaa
-rwxr-----. 1 root root 0 Feb 26 19:58 aaa
[calflyok@localhost ~]$ chmod a= aaa
[calflyok@localhost ~]$ ll aaa
----------. 1 calflyok calflyok 0 Feb 26 20:02 aaa
[calflyok@localhost ~]$ vim aaa
[calflyok@localhost ~]$ cat aaa
2.2.5 目錄與檔案之權限意義
u r (read):可讀取此一檔案的實際內容,如讀取文本文件的文字內容等;
u w (write):可以編輯、新增或者是修改該檔案的內容(但不含刪除該檔案);
u x (execute):該檔案具有可以被系統執行的權限。
u r (read contents in directory):表示具有讀取目錄結構列表的權限,可以查詢該目錄下的文件名數據。 如使用ls命令!
u w (modify contents of directory):
u x (access directory):代表的是用戶能否進入該目錄成爲工作目錄! 如使用cd命令!
2.2.6 Linux檔案種類與擴展名
u 正規檔案(regular file ):第一個字符爲 [ - ] 。
u 目錄(directory):第一個屬性爲 [ d ] 。
u 設備與裝置文件(device):通常都在/dev目錄下。
l 字符(character)設備檔:第一個屬性爲 [ c ]。
u 資料接口文件(sockets):第一個屬性爲 [ s ], 最常在/run或/tmp。
u 數據輸送文件(FIFO, pipe):第一個屬性爲[p] 。
Linux的檔案是沒有所謂的『擴展名』的,一個Linux檔案能不能被執行,與他的第一欄的十個屬性有關, 與文件名根本一點關係也沒有。
l *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經過打包的壓縮文件。
l *.html, *.php:網頁相關檔案,分別代表 HTML 語法與 PHP 語法的網頁檔案。
單一檔案或目錄的最大容許文件名爲 255bytes,以一個 ASCII 英文佔用一個 bytes 來說,則大約可達 255 個字符長度。若是以每個中文字佔用 2bytes 來說, 最大檔名就是大約在 128 箇中文字!
由於Linux在文字接口下的一些指令操作關係,一般來說,在設定Linux底下的文件名時, 最好可以避免一些特殊字符比較好!
* ? > < ; & ! [ ] | \ ' " ` ( ) { }-+
2.3 Linux目錄配置
2.3.1 目錄介紹
目錄 | 應放置檔案內容 |
第一部份:FHS 要求必須要存在的目錄 | |
/bin | /bin放置的是在單人維護模式下還能夠被執行的命令。 |
/boot | 這個目錄主要在放置開機會使用到的檔案,包括Linux核心檔案以及開機選單與開機所需配置文件等等。 Linux kernel常用的檔名爲:vmlinuz,如果使用的是grub2這個開機管理程序,則還會存在/boot/grub2/這個目錄! |
/dev | 在Linux系統上,任何裝置與接口設備都是以檔案的型態存在於這個目錄當中的。比要重要的檔案有/dev/null, /dev/zero, /dev/tty, /dev/loop*, /dev/sd*等等 |
/etc | 系統主要的配置文件幾乎都放置在這個目錄內,例如人員的賬號密碼文件、各種服務的啓始檔等等。一般來說,這個目錄下的各文件屬性是可以讓一般使用者查閱的,但是隻有root有權力修改。 |
/lib | 系統的函式庫非常的多,而/lib放置的則是在開機時會用到的函式庫,以及在/bin或/sbin底下的指令會呼叫的函式庫而已。 |
/media | media是『媒體』的英文,這個/media底下放置的就是可移除的裝置啦! 包括軟盤、光盤、DVD等等裝置都暫時掛載於此。 |
/mnt | 如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。 |
/opt | 這個是給第三方協力軟件放置的目錄。 |
/run | 早期的 FHS 規定系統開機後所產生的各項信息應該要放置到 /var/run 目錄下,新版的 FHS 則規範到 /run 底下。 |
/sbin | 放在/sbin底下的爲開機過程中所需要的,裏面包括了開機、修復、還原系統所需要的指令。 |
/srv | srv可以視爲『service』的縮寫,是一些網絡服務啓動之後,這些服務所需要取用的數據目錄。 |
/tmp | 這是讓一般用戶或者是正在執行的程序暫時放置檔案的地方。這個目錄是任何人都能夠存取的,所以你需要定期的清理一下。 |
第二部份:FHS 建議可以存在的目錄 | |
/home | 這是系統默認的用戶家目錄(home directory)。在你新增一個一般使用者賬號時,默認的用戶家目錄都會規範到這裏來。比較重要的是,家目錄有兩種代號喔: · ~:代表目前這個用戶的家目錄 · ~dmtsai :則代表 dmtsai 的家目錄! |
/root | 系統管理員(root)的家目錄。 |
目錄 | 應放置檔案內容 |
/lost+found | 這個目錄是使用標準的ext2/ext3/ext4文件系統格式纔會產生的一個目錄,目的在於當文件系統發生錯誤時,將一些遺失的片段放置到這個目錄下。不過如果使用的是 xfs 文件系統的話,就不會存在這個目錄了! |
/proc | 這個目錄本身是一個『虛擬文件系統(virtual filesystem)』喔!他放置的數據都是在內存當中,例如系統核心、行程信息(process)、周邊裝置的狀態及網絡狀態等等。因爲這個目錄下的數據都是在內存當中,所以本身不佔任何硬盤空間啊!比較重要的檔案例如:/proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/* 等等。 |
/sys | 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統,主要也是記錄核心與系統硬件信息較相關的信息。包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等等。這個目錄同樣不佔硬盤容量喔! |
2.3.2 目錄樹
2.4 總結
l Linux下除了root外,還有三類用戶,分別是文件擁有者、同組用戶和其他用戶。
l 文件的常規權限是讀(read)、寫(write)和執行(execute)。
l 文件的讀權限表示可以查看文件內容,文件的寫權限表示可以修改文件內容,文件的執行權限表示可以執行該文件,文件的刪除不屬於讀寫執行權限。
l 目錄的讀權限表示可以查看目錄內容,目錄的寫權限表示可以變動目錄內的內容,目錄的執行權限表示可以進入目錄。