學習這個章節,必須明白以下三個概念:
1.所有者
2.所屬組
3.其他人
明白這三個概念后,接下來就學習文件的屬性,那么文件的屬性有什么呢?如何查看文件的屬性?
在命令行下,執行 ls -l
可以得到以下的信息(僅已一條信息來分析)
-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
...
解釋:
第一列代表文件的類型和權限
第一個字符是"-":表示文件為普通文件。
Linux下的文件類型有如下幾種:
-:普通文件,包括文件文件和二進制文件
d:目錄文件
c:字符設備文件
b:塊設備文件
s:套接字文件(socket)
l:鏈接文件
p:管道文件(FIFO,pipe)
或許還有其他文件類型,以后學習到再補充
接下來的9個字符,3個為一組,分別表示所有者,所屬組和其他人的權限
權限有三種 r(read)讀,w(write)寫,x(execute)執行
第二列表示有多少文件名鏈接到此節點(i-node),即文件的硬鏈接數,以后詳細介紹
第三列表示這個文件的所有者
第四列表示這個文件的所屬組
第五列表示這個文件的容量大小,單位是B
第六列表示這個文件的創建日期或者最近修改如期
第七列表示文件名
------------------------------------------------------------------------------------------
改變文件屬性和權限
需要用到的命令有
chgrp:修改文件的所屬組
chown:修改文件的所有者
chmod:修改文件的權限
改變用戶所屬組chgrp命令的介紹
用以下的文件為例子
-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
由上述知道install.log文件所有者是root,所屬組是root,權限為rw-r--r--
若想要修改這個文件所屬組,可以這么做
假設在/etc/group下已經定義了一個組super
#chgrp super install.log 修改所屬組
#ls -l
-rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log 文件的所屬組被改變為super
---------------------------------------------------------------------------------
改變文件的所有者chown命令
假設在/etc/passwd已經存在用戶hello
當要修改上述的install.log這個文件所有者,可以這么做
#chown hello install.log 修改文件的所有者為hello
#ls -l
-rw-r--r--. 1 hello super 41312 Dec 10 02:48 install.log 文件的所有者被修改為hello
chown命令還能修改文件的所屬組
比如要把文件的所有者和所屬組修改為原來的root,可以這么做
#chown root:root install.log
#ls -l
-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
文件的所有者和所屬組都修改了
chown命令也可以只修改所屬組
#chown :super install.log
#ls -l
-rw-r--r--. 1 root super 41312 Dec 10 02:48 install.log
大多情況下用冒號“:”分隔所有者和所屬組,也可以用小數點“.”分隔。
什么情況下需要修改文件的所有者或所屬組?
比如,我們用cp命令復制一個文件到另一個用戶的家目錄,但是文件的屬性並沒有
修改,也就是說,另一個用戶就算得到了文件,也無法操作文件。這時候就需要修改文件的屬性
------------------------------------------------------------------------------------
修改文件的權限chmod命令
還是用上述的文件為例子
-rw-r--r--. 1 root root 41312 Dec 10 02:48 install.log
分析:
文件所有者對文件具有rw的權限,即讀和寫,不能夠執行
文件所屬組的用戶對文件具有r的權限,即只有讀的權限
其他人對文件具有r的權限,即只有讀的權限
修改文件的權限有兩種方法:
1.數字類型修改文件權限
r(4)
w(2)
x(1)
可以有這么多種表示方法
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7
命令使用示例
若想把文件的權限修改為
rwx r-x r-x
7 5 5
#chmod 755 install.log
#ls -l
可以得到如下的結果
-rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log
這種方式不是很直觀,需要轉換,個人比較喜歡用字符類型修改文件權限
字符類型修改文件權限
命令使用如下
----------------------------------------------------------
u + (加入) r
chmod g -(除去) w 文件或目錄
o =(設置) x
a
----------------------------------------------------------
u(user):表示所有者
g(group):表示所屬組
o(others):表示其他人
a(all):表示上述三者
使用示例
-rwxr-xr-x. 1 root root 41312 Dec 10 02:48 install.log
若要修改上述的文件權限為rw-r-xr-x,即所有者除去執行(x)權限,可以這么做
#chmod u-x install.log
若要修改上述的文件權限為rw-rwxr-x,即所屬組加上寫(w)權限,可以這么做
#chmod g+w install.log
若要修改上述的文件權限為rw-rwxrw-,即其他人有讀寫(rw)權限,可以這么做
#chmod o=rw install.log
若要修改上述的文件權限為rwxrwxrwx,可以這么做
#chmod a+x install.log
當然,也可以這么使用
#chmod u-x,g-x,o-r install.log
不知道我是否說清楚了。。
---------------------------------------------------------------------------------
目錄與文件的權限意義
權限對文件的重要性
r(read):可讀取此文件的實際內容,比如可以用cat等命令查看文件內容
w(write):可以編輯、新增或者是修改文件的內容,但是不能刪除該文件
x(execute):該文件具有可以被系統執行的權限。
順便說說擴展名。在LInux中是沒有擴展名的概念的,與windows不同。所以文件是否
可以執行,是靠權限x來決定的,但是要清楚一點,可以執行,不代表可以成功執行,
這要取決於文件的內容。
總結:對於文件來說,rwx主要都是文件內容的的權限,而跟文件名是滅有絕對的關系
權限對目錄的重要性
r(read contents in directory)
表示具有讀取目錄結構列表的權限,也就是說可以用ls查看目錄里有哪些文件
w(modify contents of directory)
表示具有更改該目錄結構列表的權限,也就是說可以
1.創建文件或者目錄
2.刪除已經存在的文件或目錄(不論該文件的權限為何)
3.對文件或目錄進行重命名
4.轉移該目錄內的文件、目錄位置
總之,目錄的w權限就與該目錄下面的文件名變動有關
x(access directory)
表示用戶能否進入該目錄成為工作目錄
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。