1.
Linux一般將文件可存取訪問的身份分為3個(gè)類別,分別是owner、group、others,且3種身份各有read、write、execute等權(quán)限。
2.
每個(gè)賬號(hào)都可以有多個(gè)用戶組支持。
3.
/etc/passwd,默認(rèn)情況下所有系統(tǒng)上的賬號(hào)與一般身份用戶還有root的相關(guān)信息,都記錄在這個(gè)文件夾中。
/etc/shadow,個(gè)人密碼記錄在這個(gè)文件夾中。
/etc/group,所有的組名記錄在這個(gè)文件夾中。
6.2 Linux文件權(quán)限概念
6.2.1 Linux文件屬性
1.
$ls -al,ls是“l(fā)ist”的意思,重點(diǎn)在顯示文件的文件名與相關(guān)屬性。參數(shù)“-al”則表示列出所有的文件詳細(xì)權(quán)限與屬性(包含隱藏文件,就是文件名第一個(gè)字符為“.”的文件)
2.
顯示的每一行會(huì)有如下格式,例如:
-rw-r--r-- 1 root root 42304 Sep 4 18:26 install.log,分別表示:
權(quán)限 連接 所有者 用戶組 文件容量 修改日期 文件名
3.
權(quán)限-rw-r--r--中擁有10個(gè)字符,分別代表如下:
第1個(gè)字符代表文件的類型?!癲”代表目錄,“-”代表文件,“l(fā)”代表鏈接文件(linkfile),“b”表示設(shè)備文件里面的可供存儲(chǔ)的接口設(shè)備,“c”表示設(shè)備文件里面的串行端口設(shè)備,例如鼠標(biāo)鍵盤(一次性讀取設(shè)備)。
接 下來的字符,以3個(gè)為一組,且均為“rwx”的3個(gè)參數(shù)組合,“r”表示可讀,“w”表示可寫,“x”表示可執(zhí)行(execute),這三個(gè)權(quán)限的位置不 會(huì)改變,如果沒有權(quán)限,則以減號(hào)“-”代替。第一組為文件所有者的權(quán)限,第二組為同用戶組的權(quán)限,第三組為其他非本用戶組的權(quán)限。
4.
2.中的“鏈接”表示有多少文件鏈接到此節(jié)點(diǎn)(i-node)。每隔文件都會(huì)將它的權(quán)限與屬性記錄到文件系統(tǒng)的i-node中,每個(gè)文件都會(huì)鏈接到一個(gè)i-node。這個(gè)屬性記錄的就是有多少個(gè)不同的文件名連接到相同的一個(gè)i-node號(hào)碼。
5.
2.中的“修改日期”表示這個(gè)文件的創(chuàng)建日期或最近修改的日期。如果年份太久則只會(huì)顯示年份。想要顯示完整的時(shí)間格式,則可使用如下指令(ls的參數(shù)):
$ls -l --full-time
6.
修改系統(tǒng)默認(rèn)語言為英文,可以管理員身份修改該系統(tǒng)配置文件/etc/sysconfig/i18n,利用nano編譯器進(jìn)行修改,LANG=en_US。
#nano /etc/sysconfig/i18n,將LANG后面改為“en_US……”
7.
對(duì)于目錄的權(quán)限如果是“-drwxr-xr--”,則others仍然不能進(jìn)入本目錄,需要有x權(quán)限才能進(jìn)入。
6.2.2如何改變文件屬性與權(quán)限
1.
chgrp,改變文件所屬用戶組;
chown,改變文件所有者;
chmod,改變文件的權(quán)限。
2.
chgrp就是change group的簡稱,使用該指令時(shí),要被改變的組名必須在/etc/group文件內(nèi)存在才行。
#chgrp [-R] group filename(or dirname),其中R表示進(jìn)行遞歸(recursive)的持續(xù)更改,也即連同子目錄下的所有文件、目錄。所以當(dāng)修改一個(gè)目錄中所有文件的用戶組(所有者與權(quán)限也一樣)時(shí),要加上-R。
例如將文件install.log改到users用戶組
$chgrp users install.log
3.
chown就是change owner的簡稱。
#chown [-R] user filename(or dirname),改變file的文件所有者為user。
#chown [-R] .group filename(or dirname),改變file的用戶組為group(注意加點(diǎn))。
#chown [-R] user.group filename(or dirname),改變file的文件所有者為user,用戶組為group。為避免“.”引起的系統(tǒng)誤判,通常用一下命令表示該句:
#chown [-R] user:group filename(or dirname)。
4.
復(fù)制文件給其他人,復(fù)制命令:
$cp [-option] [source file or dir] [target file or dir]
復(fù)制行為(cp)會(huì)復(fù)制執(zhí)行者的屬性與權(quán)限,所以即使復(fù)制到他人用戶組仍然無法使用,所以這時(shí)必須修改該權(quán)限。
5.
chmod就是change mode bits的簡稱。
數(shù)字類型改變文件權(quán)限:
#chmod [-R] xyz fileordir,其中x代表owner權(quán)限,y代表group權(quán)限,z代表others權(quán)限。
r=4,w=2,x=1,上面三種身份的權(quán)限是r+w+x的和,如果沒有相應(yīng)的權(quán)限,則值為0。
例如:install.log文件,owner=rwx=4+2+1=7,group=rwx=4+2+1=7,others=---=0+0+0=0,所以這個(gè)文件的將改變權(quán)限值為770:
#chmod 770 install.log。
6.
符號(hào)類型改變文件權(quán)限
我們可以用u,g,o三個(gè)參數(shù)來代表user,group,others 3種身份的權(quán)限。
a代表all,也即全部的身份。
讀寫的權(quán)限就可以寫成r,w,x。
+,-,=分別代表加入,出去,設(shè)置一個(gè)權(quán)限。
加入要設(shè)置一個(gè)文件的權(quán)限成“-rwxr-xr-x,指令為:
#chmod u=rwx,go=rx filename,注意加上那個(gè)逗號(hào)。
要給一個(gè)文件的全部身份加上x權(quán)限,則指令為:
#chmod a+x filename。
6.2.3 目錄與文件的權(quán)限意義
1.
權(quán)限對(duì)文件的作用:
文件是實(shí)際含有數(shù)據(jù)的地方,包括一般文本文件、數(shù)據(jù)庫內(nèi)容文件、二進(jìn)制可執(zhí)行文件(binary program)等。
r(read):可讀取此文件實(shí)際內(nèi)容。
w(write):可以編輯、新增或者是修改該文件的內(nèi)容(不能刪除該文件)。
x(execute):可以被系統(tǒng)執(zhí)行。
2.
權(quán)限對(duì)目錄的作用:
r(read contemts in directory)可讀取目錄結(jié)構(gòu)列表,可利用ls命令將該目錄結(jié)構(gòu)列表中的文件名顯示出來(僅能顯示文件名)。
w(modify contents of directory)可更改目錄結(jié)構(gòu)列表,如新建、刪除、重命名、轉(zhuǎn)移文件或目錄。
x(access directory)可進(jìn)入該目錄成為工作目錄(就是目前所在的目錄),當(dāng)?shù)顷慙inux時(shí)所在的~(即主文件夾)就是當(dāng)前工作目錄。
3.
工作目錄對(duì)于命令的執(zhí)行非常重要,如果對(duì)一個(gè)目錄不具有x權(quán)限,則無法使該目錄稱為工作目錄,也就無法執(zhí)行該目錄下的任何命令。
要開放目錄給任何人瀏覽時(shí),應(yīng)該至少給予r和x的權(quán)限,但w的權(quán)限不可以隨便給。
4.
如果具有對(duì)一個(gè)目錄的w權(quán)限,那么該目錄下的任何文件都可以刪除,不管要?jiǎng)h除的文件的所有者和用戶組是什么。
5.
#cd /tmp,切換工作目錄到/tmp
#mkdir testing,在以上目錄下建立testing文件夾
#chmod 744 testing,更改以上創(chuàng)建的testing文件夾的權(quán)限為drwxr--r--
#touch testing/testing1,在testing文件夾中新建空的文件testing1
#ls -ald testing testing/testing1,列出上面創(chuàng)建的文件夾和文件的信息(ls的-a參數(shù)表示all,即顯示所有文件,包括隱藏文件;-l參數(shù)表示 long,顯示長信息格式,即顯示用戶組,所有者,修改日期等等;-d參數(shù)表示將目錄象文件一樣顯示,而不是顯示其下的文件)。
可以看到testing目錄,和testing1文件的所有者和用戶組都是root。
下面來用自己的賬號(hào)進(jìn)行一些操作。
6.
#su - SF_Chipan,切換身份成為SF_Chipan
$cd /tmp,進(jìn)入/tmp成為工作目錄
$ls -l testing,列出testing目錄中的內(nèi)容,因?yàn)閯偛旁?.中設(shè)置了testing目錄對(duì)others的權(quán)限為r,所以這里就會(huì)顯示文件名為testing1的文件,其他都是問號(hào)。
$cd tesing,這時(shí)候因?yàn)镾F_Chipan身份對(duì)testing目錄的權(quán)限只是r,沒有x,所以不能使testing成為工作目錄。
7.
使用“su - ”登陸的賬戶,當(dāng)使用$exit退出時(shí),是退回使用“su - ”之前的賬戶。如果使用“su - ”登陸root賬戶,需要提供密碼,而root賬戶登陸到一般賬戶,則不需要提供密碼。
8.
可以是用rm命令刪除testing1文件:
#cd /tmp/testing
#rm testing1
6.2.4 Linux文件種類與擴(kuò)展名
1.
文件種類:
普通文件(regular file):[-]
純文本文件(ASCⅡ):Linux中最多的一種文件類型。可以執(zhí)行下列命令來查看一個(gè)隱藏文件:
$cat ~/.bashrc,cat是將一個(gè)文件內(nèi)容讀出來的命令。
二進(jìn)制文件(binary):Linux中的可執(zhí)行文件就是這種格式的(scripts、文字批處理文件不算),.bashrc就是這種格式。
目錄(directory):[d]
鏈接文件(link):[l],有點(diǎn)類似windows下的快捷方式。
設(shè) 備與設(shè)備文件(device)通常分為一下兩種:塊(block)設(shè)備文件,[ d],就是一些存儲(chǔ)數(shù)據(jù)以提供系統(tǒng)隨機(jī)訪問的接口設(shè)備,如硬盤等??梢噪S機(jī)地在硬盤的不同塊讀寫,這種設(shè)備就是成組設(shè)備;字符(character)設(shè)備 文件,就是一些串行端口的接口設(shè)備,如鍵盤鼠標(biāo),特點(diǎn)是“一次性讀取”,不能夠階段輸出,比如鼠標(biāo)不可能跳到另一個(gè)地方,只能劃過去。
套接字(sockets):[s],通常被用在網(wǎng)絡(luò)上的數(shù)據(jù)連接。我們可以啟動(dòng)一個(gè)程序來監(jiān)聽客戶端的請(qǐng)求,而客戶端就可以通過這個(gè)socket來進(jìn)行書序的通信。通常在/var/run這個(gè)目錄中就能看到。
管道(FIFO,pipe):[p],主要目的在解決多一個(gè)程序同時(shí)訪問一個(gè)文件所造成的錯(cuò)誤問題。FIFO是first-in-first-out的縮寫。
上面的套接字和管道都與進(jìn)程比較有關(guān),可以通過man fifo及man socket來查閱。
2.
一個(gè)Linux文件能不能被執(zhí)行,與它的第一列的10個(gè)屬性有關(guān),與文件名一點(diǎn)關(guān)系都沒有。
3.
x權(quán)限代表這個(gè)文件具有可執(zhí)行的能力,但能不能執(zhí)行成功,要看該文件的內(nèi)容。
4.
我們希望可以通過擴(kuò)展名了解該文件時(shí)什么東西,所以還是會(huì)使用適當(dāng)?shù)臄U(kuò)展名來表示該文件是什么種類的。
5.
*.sh:腳本或批處理文件(scripts),因?yàn)榕幚砦募胹hell寫成的,所以擴(kuò)展名就是.sh。
*Z、*.tar、*tar.gz、*zip、*.tgz:經(jīng)過打包的壓縮文件。由于不同的壓縮軟件而取其相關(guān)的擴(kuò)展名。
*.html、*.php:網(wǎng)頁相關(guān)文件,分別代表HTML語法與PHP語法的網(wǎng)頁文件。.html的文件可以使用網(wǎng)頁瀏覽器來直接啟動(dòng);.php的文件,可以通過客戶端的瀏覽器來服務(wù)端瀏覽,以得到運(yùn)算后的網(wǎng)頁結(jié)果。
6.
從網(wǎng)絡(luò)上傳送到你的Linux系統(tǒng)中,文件的屬性與權(quán)限可能是會(huì)改變的。
7.
在Linux下,使用默認(rèn)的Ext2/Ext3文件系統(tǒng)時(shí),針對(duì)文件的文件名長度限制為:單一文件或目錄的最大容許文件名為255個(gè)字符;包含完整路徑名稱及目錄(/)的完整文件名為4096個(gè)字符。
8.
由于Linux在文字界面下的一些命令操作的關(guān)系,在設(shè)置文件名時(shí),最好能避免一些特殊的字符,如:*?><;&![]|\'"`(){}。
聯(lián)系客服