歡迎您光臨本站 註冊首頁

Linux進行時(四)(鳥哥的私房菜筆記)

←手機掃碼閱讀     火星人 @ 2014-03-22 , reply:0

最近練習POJ,落下了Linux的進度。感覺自己有如井底之蛙,知之甚少。學習,還是得一步一個腳印的來。改改自己的眼高手低,改改自己的沒有耐性。
下面是筆記內容:

Linux的文件屬性與目錄配置:
1. 用戶與用戶組:
任何一個文件都具有「用戶,用戶組和其他人」3個許可權。Root可以查看任何文件,具有最高許可權。/etc/passwd文件記錄root的相關信息,/etc/shadow文件記錄密碼信息,/etc/group文件記錄用戶組信息。不要隨便刪除這3個文件。
2. Linux文件許可權
[root@linux ~] # ls ?al (列出所有文件的屬性)
依次列出的信息由:文件屬性,連接數,文件擁有者,文件所屬用戶組,文件大小,文件最新修改時間,文件名

a. 文件屬性,一共有十個:文件類型(1),文件擁有者的屬性(3),文件所屬用戶組的屬性(3),其他人對此文件的屬性(3)
第一個屬性——文件類型:[d],目錄;
[-]:文件;
[l]:連接文件;
:設備文件中可供存儲的介面設備
[c]:設備文件中的串列埠設備,例如鍵盤,滑鼠
接下來的屬性,3個位一組:r:可讀
w:可寫
x:可執行
注意:如果非root賬號的其他用戶不能執行任何命令,(也就是沒有x許可權),那自然就無法進入。即使有r許可權,也不能執行讀任務,因為連進入都不能被執行。在windows中,一個文件是否可以被執行通過擴展名來決定,但是在Linux中,文件能否執行與文件名無關,要通過是否具有x屬性來決定。
[-][rwx][r-x][r--]
1 234 567 890
1:表示這個文件名為目錄或文件
234:擁有者的許可權(上面為可讀、可寫、可執行)
567:同用戶組用戶許可權(上面為可讀可執行)
890:其他用戶許可權(上面僅為可讀)
b.第二列表示連接佔用的節點(i-node):這與連接文件(link file)有關。
c:表示這個文件的擁有者
d:第四列表示擁有者的用戶組:
如果一個用戶組代號為testgroup,3個成員代號分別為test1,test2,test3,如果該文件屬於test1所有,那麼test2,test3也有讀寫執行的權力。
E:文件的大小
f:這個文件的創建日期或者最近的修改日期:如果中文安裝Linux,默認語系可能會改為中文。由於中文無法顯示在命令行類型的終端上,所以這一列會成為亂碼。此時修改/etc/sysconfig/i18n文件,將裡面的「LC_TIME:修改為「LC_TIME=en」存儲退出后,再次登錄,就可以得到英文顯示的日期了。
g:第七列為這個文件的文件名:如果文件名前有「.」,則表示這個文件為「隱藏文件」,由於有參數ls-al,所以將隱藏文件列出來了,如果只輸入ls,前面加「.」的文件就不會顯示出來。
2.2:更改文件許可權
chgrp:改變文件所屬用戶組
chown:改變文件擁有者;
chmod:改變文件的屬性、SUID等特性
a:更改所屬用戶組,chgrp
首先,要改成的用戶組名稱,必須在/etc/group里存在,否則顯示錯誤。假設以root身份登錄FC4,那麼,在您的主文件夾中有一個install.log文件,改變該文件的用戶組方法如下:名為users的用戶組在/etc/group中,testing用戶組不再這個文件夾中,此時,試圖改變用戶組為users與testing.
[root@linux ~]# chgrp [-R] dirname/filename.....
參數:
-R:進行遞歸(recursive)的持續更改,即連同子目錄下的所有文件、目錄都更新成這個用戶組。常常用在更改某一目錄的情況。
For example:
[root@linux ~]#chgrp users install.log
[root@linux ~]#ls -l
-rw-r—r-- 1 root users 68495 Jun 25 08:53 install.log
[root@linux ~]# chgrp testing install.log
chgrp: invalid group name 'testing' <==出現錯誤信息~找不到這個用戶組名~

b.更改文件擁有者,chown
如果要將目錄下的所有子目錄或文件同時更改文件擁有者,直接加上-R的參數即可:
[root@linux~]#chown [-R] 帳號名稱:文件或目錄
[root@linux~]#chown bin install.log
[root@linux~]#ls -l
-rw-r—r-- 1 bin users 68495 Jun 25 08:53 install.log
[root@linux~]#chown root:root install.log
[root@linux~]#ls -l
-rw-r—r-- 1 root root 68495 Jun 25 08:53 install.log
eg:
將.bashrc文件複製成.bashrc_test,並給bin 這個人
[root@linux~]# cp .bashrc .bashrc_test
[root@linux~]# ls -al .bashrc*
-rw-r—r-- l root root 395 Jul 4 11:45 .bashrc
-rw-r—r-- l root root 395 Jul 13 11:31 .bashrc_test
.bashrc_test 還是屬於root所有,即使將文件拿給bin 用戶,還是無法修改,所以必須修改這個文件的擁有者與用戶組

c.更改9個屬性:chmod
屬性的設置方法有兩種:分別可以使用數字或者符號
1.數字類型改變文件許可權
Linux文件的基本屬性有9個,分別是owner/group/others組成的read/write/excute屬性,這9個屬性中3個為一組,其中,可以使用數字來表示各個屬性:
r:4
w:2
x:1
將同一組的三個屬性(r/w/x)累加,如屬性為[-rwxrwx---]則是:owner=rwx=7,group=rwx=7,others=---=0;
更改屬性的命令chmod的語法如下:
[root@linux~] # chmod [-R] xyz 文件或目錄
xyz:就是剛提到的數字類型的許可權屬性,為rwx屬性數值的和
-R:進行遞歸的持續更改,即將同子目錄下的所有文件、目錄都更新為這個用戶組。
如果要將.bashrc文件的所有屬性都打開,執行命令:
[root@linux ~]# ls -al .bashrc
-rw-r—r-- 1 root root 395 Jul 4 11:45 .bashrc
[root@linux ~]#chmod 777 .bashrc
[root@linux ~]#ls -al .bashrc
-rwxrwx 1 root root 395 Jul 4 11:45 .bashrc
2.符號類型改變文件許可權
一共有9個屬性,分別是user,group,others 三個,可以通過u、g、o來表示3組的屬性。A表示all.

Chmod u\g\o\a +(加入)\-(除去)\-(設置) r,w,x 文件或目錄

如果要設置一個文件的屬性為「-rwxr-xr-x」,user(u):具有可讀、可寫、可執行許可權;group與others(g\o):具有可讀與可執行的許可權。
所以:

[root@linux~]# chmod u=rwx,go=rx,bashrc
[root@linux~]# ls -al .bashrc

如果要將屬性去掉,而不更改其他屬性,例如要去掉所有人的屬性:
[root@linux~]# chmod a-x .bashrc
[root@linux~]# ls -al .bashrc
如果讓一個程序可以擁有執行的許可權,又不知道文件原本的許可權是什麼,採用chmod a+x filename ,就可以讓該程序擁有執行的許可權了。

2. 目錄屬性的意義
前面所的是一般文件的特性,如果是針對目錄,r,w,x的含義如下:
r(read contents in directory):表示具有讀取目錄結構清單的許可權,可利用ls命令將該目錄的內容列出來。
w(modify contents of directory):表示擁有更改該目錄結構清單的許可權,即:建立新的文件與目錄;刪除已經存在的文件與目錄(不論該文件是屬於誰的);將已存在的文件或目錄進行重命名;移動該目錄內的文件、目錄的位置
一般身份用戶(假設用戶名為name),則name可以刪除由root在name目錄內建立的文件。
x(access directory):x與能否進入該目錄有關


[root@linux~] # cd /tmp
[root@linux tmp]# mkdir testing (mkdir是建立目錄用的命令,是make directory的縮寫,此行表示用root的身份在/tmp下建立一個名為testing的目錄。)
[root@linux tmp]# chmod 744 testing(將該目錄的許可權變為744,該目錄的擁有者為root)
[root@linux tmp]# touch testing/testing(touch用來建立一個沒有內容的文件)
[root@linux tmp]# chmod 600 testing/testing
[root@linux tmp]# ls -al
如果用戶帳號是name,將root改為name:
[root@linux tmp]# su name
[name@linux tmp]$ ls -1 testing (當使用系統的人變成name時,#變為$)
total 0
?--------- ? ? ? ? ? testing
[name@linux tmp]$ cd testing <==此時身份為name
bash: cd: testing/: Permission denied(由此可再次得出,即使我們具有r的許可權,但是沒有x,所以仍然無法進入/tmp/testing
[name@linux tmp]$ exit
[root@linux tmp]# chown name testing(使用exit就可以可離開su了,我們將這個testing目錄的擁有者設置為name,此時name 就成為owner了
[name@linux testing]$ rm testing (rm: remobe write-protected regular empty file 'testing').(測試后發現可以刪除,因為tmp/testing 下建立的testing 空文件夾是在name 的目錄下建立的,所以可以直接刪除,然而tmp中的testing不可以刪除,它是由root 建立的。
2. linux文件類型與擴展名
a.文件種類
1> 普通文件(regular file):由ls-al顯示出來的屬性中,第一個屬性為[-],根據文件的內容,可以分為:
一:純文本文件(ASCII):配置文件幾乎都屬於這種文件類型。使用命令 cat~/.bashrc 就可以看到該文件的內容(cat是將文件內容讀出來)
二:二進位文件(binary):linux中的可執行文件就是這種格式。命令cat就是一個二進位文件。
三:數據格式的文件(data):有些程序在運行過程中,會讀取某些特定格式的文件,那些特定格式的文件可以成為數據文件。例如:linux在用戶登錄時,會將登錄數據記錄在/var/log/wtmp文件內,該文件是一個數據文件,它能通過last命令讀出來。但使用cat時,會出現亂碼。因為它屬於一種特殊格式的文件。
2>目錄(directory):第一個屬性是[d]
3>連接文件(link):類似Windows下面的快捷方式。第一個屬性是[l]
4>設備與設備文件(device):與系統外涉及存儲等相關的一些文件愛你,通常都集中在/dev目錄下,該文件又分為兩種:
一:塊(block)設備文件:就是存儲數據以供系統訪問的介面設備,簡單而言就是鍵盤。第一個屬性是
二:字元(character)設備文件:即串列埠的介面設備,例如鍵盤,滑鼠等。第一個屬性是[c]。
5>套接字(sockets):這類文件通常用在網路數據連接。可以啟動一個程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為[s],通常在/var/run目錄中看到這種文件類型。
6>管道(FIFO,pipe):FIFO也是一種特殊的文件類型,主要目的是,解決多個程序同時訪問一個文件所造成的錯誤,FIFO是先進現出的所寫,第一個屬性為[p]。
設備文件是系統中很重要的文件,最好不要修改。

b.linux文件擴展名:
一般Linux文件沒有擴展名,不過,可以執行與執行成功不一樣。在root目錄下的install.log是一個純文本文件,如果修改許可權成為-rwxrwxrwx后,由於它的內容根本就沒有可執行的數據,所以說,x表示這個文件具有可執行的能力,但能不能執行成功,當然就要看該文件的內容了。
linux擴展名沒有實際的幫助,但是,可以用擴展名了解該文件的內容。下面有數種常用的擴展名:
1. *.sh:批處理文件(scripts,腳本),因為批處理文件使用shell寫成,所以擴展名就為.sh
2. *Z, .tar, .tar.gz , *.zip, *.tgz:經過打包的壓縮文件,這是因為壓縮軟體而取其相關的擴展名。
3. .html, *.php:網頁相關文件,分別表示HTML語法與PHP語法的網頁文件。
由於從網路上傳送到LINUX系統的文件屬性會改變,如果不改變屬性,有可能無法執行。當文件名的開頭為小數點「.」時,表示這個文件為「隱藏文件」。由於命令中常常會使用-option之類的參數,所以最好應避免將文件名的開頭以-或+來命名。

6.4
6. Linux目錄配置
a. Linux目錄配置標準 FHS(Filesystem Hierarchy Standard,文件系統層次標準):它規範了在根目錄(/)下各個主要目錄應該放什麼樣的文件。
FHS定義了兩層規範,第一層是,/目錄下的各個目錄應該放什麼文件數據,例如/etc應該放置設置文件,/bin與/sbin則應放置可執行文件等。第二層則是針對/usr和/var這兩個目錄的子目錄來定義。比如,/var/log放置系統登錄文件,/usr/share放置共享數據。(也就是說,FHS定義出最上層/及子層(/usr,/var)的目錄內容應該要放置的文件數據,其他子層目錄,可以由開發人員自行配置)。
每一個目錄不僅能使用本地端分區的文件系統,也可以使用網路上的文件系統。可以利用網路文件系統(Network File System,NFS)伺服器載入某特定目錄。
絕對路徑:從根目錄開始寫起的文件名或目錄名稱;
相對路徑:當前所在路徑的相對位置
. :表示當前目錄,也可以使用./來表示
.. :表示上一層目錄,也可以用../來表示
 :表示前一個工作目錄
~:表示當前用戶身份所在的家目錄
~account:表示account用戶的家目錄
單一文件或目錄的最大允許文件名為255個字元

包含完整路徑名稱及目錄(/)的完整文件名為4096個字元)

[火星人 ] Linux進行時(四)(鳥哥的私房菜筆記)已經有539次圍觀

http://coctec.com/docs/linux/show-post-104390.html