集寧做網(wǎng)站的公司電商是做什么的
后面我們寫代碼時(shí),寫完可能會(huì)出現(xiàn)沒(méi)有執(zhí)行權(quán)限什么的,所以我們要知道文件都有哪些權(quán)限和類型。
首先
就像我們之前目錄結(jié)構(gòu)圖里面有個(gè)/dev,它就是存放設(shè)備文件的,也就是說(shuō),哪怕是一個(gè)硬件設(shè)備,例如打印機(jī)啥的,它也把它映射成一個(gè)文件。這就是一切皆是文件。
但它不是以文件的后綴名來(lái)區(qū)分文件類型的。
如上圖,就是在進(jìn)到 家目錄:/home/stu ? ?~ ?兩者等價(jià),底下的quzijie文件夾(目錄文件)里面,再用mkdir來(lái)創(chuàng)建一個(gè)文件夾(目錄文件),名字叫class03(mkdir建立的目錄文件其文件名的顏色一般是藍(lán)色),創(chuàng)建完然后進(jìn)到class03里面,這時(shí)class03里面是空的。
此時(shí)其絕對(duì)路徑是/home/stu/quzijie/class03.
現(xiàn)在在class03文件夾里面用touch建一個(gè)普通文件,名字叫xxx.yyy。
可以看到成功了,這說(shuō)明不管文件后綴名是什么,即使是.yyy這種,Linux也能創(chuàng)建成功,它不以后綴名來(lái)區(qū)分文件類型。
同理,再建一個(gè)y.x文件,后綴名是.x也能成功。
這些并不是我們?cè)赪indows上所熟知的什么.txt是文本文件類型的后綴名,.pdf是圖片類型的后綴名。
那么來(lái)看Linux是以什么來(lái)判斷文件類型的,Linux是在文件屬性中專門有一列內(nèi)容來(lái)記錄文件類型的。
如圖,用命令ll,我們可以看到,第一列內(nèi)容,就告訴了你文件類型
d:表示這是一個(gè)目錄文件(文件夾),./:是當(dāng)前目錄class03,../:是上一層目錄quzijie。
-:表示這是一個(gè)普通文件,xxx.yyy,y.x都是剛剛用touch建立的普通文件。
例如再在class03里面用mkdir建一個(gè)目錄文件test,然后ll。可以看到test目錄文件前面的就是d。
這里是一些常用的文件類型標(biāo)識(shí)
上圖中的普通文件一堆標(biāo)識(shí)就是說(shuō)這些是用touch建立的文件,而touch建立的普通文件用cd是進(jìn)不去的,因?yàn)閏d只能進(jìn)去目錄文件(文件夾),要用mkdir建立。如圖,ll進(jìn)去文件y.x文件的那一行第一個(gè)字符是-,就代表是普通文件
而cd test就可以進(jìn)去test,雖然ls顯示test里面什么都沒(méi)有為空,此時(shí)絕對(duì)路徑就是/home/stu/quzijie/class03/test.? ? ? ? cd進(jìn)入一個(gè)新目錄文件,其路徑名就加一個(gè)(/新進(jìn)入的目錄名)
一般cd后緊接著都是ls,看看進(jìn)去的文件夾里面有什么
或者用? ls -l? 就等同于? ll? 進(jìn)去看到一個(gè)目錄文件夾里的所有文件信息,此時(shí)test里面沒(méi)有東西所以是總計(jì)0,那我們 cd .. 退回到test的上一層目錄文件class03里面,再 ls -l去看class03目錄文件夾里面的所有文件信息,如下
然后我們看這些文件信息都是什么東西
文件類型下來(lái)就是文件權(quán)限,一共有9列,可分為前3列(文件所有者即創(chuàng)建者u的讀r,寫w,執(zhí)行x的3列訪問(wèn)權(quán)限,這3列所代表的順序不能變1讀2寫3執(zhí)行),中間3列是文件的同組組員用戶的3種訪問(wèn)權(quán)限,后3列是其他人的3種訪問(wèn)權(quán)限。
其相應(yīng)位置顯示相應(yīng)字母就代表相應(yīng)的人擁有了相應(yīng)權(quán)限,顯示(-)就是你沒(méi)有相應(yīng)的權(quán)限。要看文件權(quán)限就是 ls -l 或者 ll 進(jìn)入可看
權(quán)限下來(lái)是鏈接數(shù),
對(duì)于普通文件來(lái)說(shuō),有幾個(gè)鏈接了這個(gè)文件,那么鏈接數(shù)就是幾。
對(duì)于目錄文件來(lái)說(shuō),就是一級(jí)子目錄的個(gè)數(shù)。
鏈接數(shù)下來(lái)是擁有者即文件所屬者
我們前面建立的文件或文件夾其所屬者都是stu,stu就是一開(kāi)始我們給自己取的用戶名。
所屬者下來(lái)是它的同組人也是stu,因?yàn)長(zhǎng)inux是多用戶系統(tǒng),但目前我們這里只有自己這一個(gè)用戶,所以所屬組,同組人也是自己這個(gè)用戶stu。
所屬組下來(lái)是文件的大小,下來(lái)是文件最后一次的修改時(shí)間,最后就是文件名。
以上就是Linux里面文件的所有詳細(xì)的屬性信息,用 ls -l來(lái)看。
下來(lái)是一個(gè)重點(diǎn)——如何修改文件的權(quán)限——chmod的用法,用來(lái)修改文件權(quán)限的2種方法。
先來(lái)在class03目錄底下touch一個(gè)普通文件main.c
然后 ls -l 看一下main.c都有什么權(quán)限
可以看到main.c的所有者和同組人有讀和寫的權(quán)限,但沒(méi)有執(zhí)行權(quán)限;而其他人只有一個(gè)讀的權(quán)限。
修改用戶權(quán)限法一——文字設(shè)定法——+,-,=
那么現(xiàn)在如果要給其他人加上一個(gè)寫的權(quán)限——要怎么做?!猚hmod o+w main.c
(chmod 空格 3類用戶中的某一個(gè)或a(all代表3類用戶都包含)(+,-,=)3類權(quán)限中的什么 空格 文件名)
可以看到 chmod o+x main.c之后 ls -l顯示,main.c的執(zhí)行權(quán)限x就加上了
再執(zhí)行一遍也沒(méi)有報(bào)錯(cuò)
要是要把這個(gè)x權(quán)限去掉,就是將剛剛的o+x改為o-x就行,在例如給u加上x(chóng)權(quán)限
給所有人都加上x(chóng)權(quán)限
這里u,g,o,a就是一個(gè)參數(shù),所以跟后面的+,-,=符號(hào)之間不要有空格
現(xiàn)在對(duì)于main.c文件而言所有人都有執(zhí)行x權(quán)限了,那么main.c文件就變成綠色的了。
要是把所有人的執(zhí)行權(quán)限x都去掉,chmod a-x main.c,現(xiàn)在main.c文件就變成黑色的了,雖然都是普通文件。
現(xiàn)在給屬主把寫權(quán)限w去掉后,現(xiàn)在文件main.c的所有者user再想要往文件main.c里面寫東西的話就寫不進(jìn)去了。就是因?yàn)闆](méi)有寫權(quán)限。
一般出問(wèn)題后先打開(kāi)看看是不是權(quán)限問(wèn)題
二.還有另一種修改權(quán)限的方法,直接使用等于號(hào)——? =
對(duì)于文件的哪一類操作用戶想要有哪些操作權(quán)限,就讓那類用戶直接=它需要的所有權(quán)限,例如上圖中,文件所有者user需要讀r和寫w權(quán)限,就是——u=rw。
那現(xiàn)在要同時(shí)給2類操作用戶來(lái)修改權(quán)限,屬主user和同組用戶group,要怎么做——不同類的操作用戶之間用逗號(hào),隔開(kāi)
上圖就是同時(shí)修改2類操作用戶的權(quán)限
修改用戶權(quán)限法二——數(shù)字設(shè)定法——用的最多
如果要同時(shí)對(duì)3類用戶都進(jìn)行權(quán)限修改,此時(shí)用文字設(shè)定法就比較麻煩,用數(shù)字設(shè)定法更好
先來(lái)看一下這個(gè)421是怎么來(lái)的
3種權(quán)限r(nóng)wx分別都占著位置,對(duì)應(yīng)二進(jìn)制里面也是占著3個(gè)位置
rwx
100——對(duì)應(yīng)為r--,也就是4
010——對(duì)應(yīng)為-w-,也就是2
001——對(duì)應(yīng)為--x,也就是1
這里的nnn對(duì)應(yīng)的就是ugo
nnn
ugo
n為根據(jù)rwx有無(wú)的數(shù)值和
例如6? ? ? ? 6? ? ? ? ?4——就是
? ? ? ?rw-? ? ?rw-? ? ?r--
? ? ? ? 7? ? ? ? 7? ? ? ? 7——
? ? ? rwx? ? ?rwx? ? rwx
下圖在工作中一般是不允許的,例如其他人o是沒(méi)有寫w權(quán)限的,不能讓其他人隨便就把我的文件給改動(dòng)了
就像下面原始創(chuàng)建的普通文件y.x,一開(kāi)始就是默認(rèn)的664,(正常情況下多數(shù)都給664)其他人只有讀r權(quán)限,因?yàn)長(zhǎng)inux是多用戶系統(tǒng),所以所有者和同組人可以有讀和寫的權(quán)限
如圖,touch出的普通文件(yy.xxy)都是664,你可以自己給它改一下改成644
再給main.c改個(gè)641