1. 程式人生 > >linux中檔案/資料夾的許可權

linux中檔案/資料夾的許可權

linux是一個多使用者的作業系統,每個使用者都有自己的檔案,有些檔案對用於來講是保密的,不希望別人看到,有些檔案儘管可以被別人看到,但不允許別人去修改,還有些檔案是允許所有人自由修改的,所以就有了檔案的許可權。如果使用者比較多的話,有些檔案對一些人是可讀可寫的,對令一些人卻是隱藏的,這種情況下設定使用者組則可以更加有效地來管理許可權。本篇部落格要討論的就是這一堆的事情在linux中是如何工作的。

使用者/使用者組/許可權 概覽

首先,檔案具有三種類型的許可權,分別是:
- 可讀(r)
- 可寫(w)
- 可執行(x)

由於使用者組的概念也攙合進來了,所以,每個檔案需要分別指明對擁有者/組內成員/組外成員的許可權。
來看一下我本機的使用者目錄下的檔案列表

[[email protected] ~]$ ls -al
total 132
drwx------. 25 kite kite 4096 9月  16 19:18 .
drwxr-xr-x.  4 root root 4096 9月  14 09:21 ..
-rw-------.  1 kite kite 2555 9月  16 15:59 .bash_history
-rw-r--r--.  1 kite kite  193 5月  30 12:53 .bash_profile
-rw-r--r--.  1 kite kite  231 5月  30 12:53 .bashrc
drwx------
. 25 kite kite 4096 9月 16 16:02 .cache drwxr-xr-x. 2 kite kite 4096 9月 13 21:26 Desktop drwxr-xr-x. 2 kite kite 4096 9月 13 21:26 Documents

以上是使用者目錄下的部分檔案,包含的資訊量是很大的,以.bash_profile檔案為例,列表共包含以下資訊

-(檔案型別)rw-r–r–(檔案許可權) . 1(連線數) kite(檔案擁有著) kite(所屬使用者組) 193 5月 30 12:53(修改時間) .bash_profile(檔名)

檔案型別的話,常見的是兩種,-

表示檔案,d表示資料夾。
檔案許可權共包含9個字元,每三個字元為一組,前三個是對所有者(owner)的讀取/寫入/執行許可權,中間三個對組內成員(group)的讀取/寫入/執行許可權,最後三個是對組外成員(others)的讀取/寫入/執行許可權。
許可權一定是九個字元,如果有許可權,則會顯示對應的許可權程式碼,讀取/寫入/執行的許可權程式碼分別是r/w/x,如果沒有對應的許可權的話,則顯示為-

還以.bash_profile檔案為例,rw-r--r--,它的owner具有讀取和寫入的許可權,group具有讀取許可權,others也具有讀取許可權。
以Desktop資料夾為例,rwxr-xr-x,它的owner具有讀取/寫入/執行的許可權,group和others具有讀取和執行許可權。

檔案許可權和資料夾許可權

檔案的許可權比較好理解
- r 表示檔案的內容可以被讀取
- w 表示這個檔案的內容可以被修改。
- x 代表檔案可以被執行,一般情況下,.sh檔案需要有這個許可權。

容易引起誤會的是,擁有w許可權並不代表可以對此檔案進行刪除操作和重新命名操作,w許可權僅代表檔案的內容可以被修改。

資料夾的許可權稍微有點不一樣
- r 表示可以檢視此資料夾下的檔名列表
- w 表示可以對此資料夾下的檔案進行刪除/重新命名/移動
- x 表示可以將此資料夾作為working dir,或者說表示可以cd到這個資料夾中

可以將資料夾/檔案的關係理解為程式碼中的list/object,如果一個list是隻讀的,表示你不能做insert/delete等操作,但仍然可以修改object內部的任何屬性。

所以,一個檔案是否可以被刪除,取決於檔案所在的資料夾是否具有w許可權。那麼,我們同樣也可以得出這麼一個結論:擁有資料夾的w許可權,並不意味著可以對資料夾本身進行重新命名或刪除,因為這個決定於此資料夾的parent資料夾是否具有w許可權。

修改許可權

根據對上面內容的理解,我們可以從三個方面來修改一個檔案或資料夾的許可權

  1. 修改group
  2. 修改owner
  3. 修改檔案相對於owner/group/others的許可權

接下來分別介紹這三個操作

修改group

chgrp [-R] groupname filename/dirname

chgrp就是change group,意思就是將filename/dirname所在的組修改為groupname組,如果提供-R引數並且最後一個引數是一個資料夾的話,則會遞迴影響該資料夾下的所有檔案和資料夾。

修改owner

chown [-R] owner filename/dirname
chown [-R] owner:groupname filename/dirname

chown就是change owner,意思是將filename/dirnane所屬的所有者修改為owner使用者,如果提供-R引數並且最後一個引數是一個資料夾的話,則會遞迴影響該資料夾下的所有檔案和資料夾。
該命令還可以使用owner:groupname的形式,在修改owner的同時,順帶著把group也修改了。

修改許可權

比起前兩個,修改許可權更有意思了,使用chmod命令來完成。它的目的就是修改許可權對應的9個字元,但支援兩種方式,分別是數字方式和字元方式。

數字方式

將owner/group/others所對應的9個許可權程式碼每三個分為一組,共3組,每個許可權程式碼代表一個數字,每組將三個數字求和,最終給出每組程式碼的和。r=4,w=2,x=1。
例如:rwx=4+2+1=7,rw-=4+2=6,r-x=4+1=5,r–=4
如果希望將a.txt檔案的許可權修改為rw-r–r–的話,先計算出三組程式碼之和是(4+2),(4),(4),最終的許可權程式碼是644,最終的命令為

chmod 644 a.txt

字元方式

將owner/group/others對應為三個字元,owner=u(user),group=group,others=o,可以為某一組增加或刪除某個許可權,也可以直接為某一組設定一個新的許可權。增加/刪除/重置對應的字元是+/-/=。
假設我想為start.sh增加一個執行許可權給擁有者,可以這麼寫

chmod u+x start.sh

如果我向刪除start.sh對應的group和others的執行許可權,可以這麼寫

chmod go-x start.sh

上面的兩個命令還可以和到一起寫

chmod u+x,go-x start.sh

注意,u+x,go-x中間是沒有空格的

如果我希望直接將hello.txt檔案的許可權設定為rwxr--r--的話,可以這麼寫

chmod u=rwx,go=r

除了owner=u(user),group=group,others=o之外,還有一個a,代表所有,也就是說,a等價於ugo。如果我希望同時給start.sh對應的owner/group/others都去掉執行許可權的話,可以這麼寫

chmod u-x,g-x,o-x start.sh
chmod ugo-x start.sh

還可以這麼寫

chmod a-x start.sh

好了,表達能力實在有限,希望我的例子你能夠看懂。

相關推薦

linux檔案/資料許可權

linux是一個多使用者的作業系統,每個使用者都有自己的檔案,有些檔案對用於來講是保密的,不希望別人看到,有些檔案儘管可以被別人看到,但不允許別人去修改,還有些檔案是允許所有人自由修改的,所以就有了檔案的許可權。如果使用者比較多的話,有些檔案對一些人是可讀可寫的

Linux檔案的隱藏許可權

  在linux中使用ls -l列出的檔案許可權有-rwxrwxrwx這9個,其實除了這9個外還有另外的一些隱藏的許可權,這些許可權需要使用lsattr這個命令才可以檢視到,而如果要修改隱藏許可權,則使用chattr這個命令來進行修改。   chattr:引數

我是如何把linux資料拷貝到window本地的

首先我先把這個資料夾打包 tar -czvf frag.tar.gz frag/* 執行這個命令的目錄是在frag目錄的上層目錄 然後 sz frag.tar.gz 就儲存在window下了 儲存

Linux 檔案資料獲取 MySQL 許可權(SELinux)

  今天在 Linux 系統上移動 MySQL 的資料庫目錄 配置如下: /etc/my.cnf [mysqld]datadir=/home/mysqlsocket=/var/lib/mysql/mysql.sock 更改完配置檔案重啟MYSQL的時候出現

python修改linux檔案資料)的許可權屬性

今天生成的對流雲團路徑圖片放在linux下,檔案的許可權都是rw,沒有x,後續的別人的程式調用不了,這裡附上對三個屬性的簡單解釋,有不夠的歡迎大家補充 Linux的許可權不是很細緻,只有RWX三種 r(Read,讀取):對檔案而言,具有讀取檔案內容的許可權;對目錄來說,具有

Linux檔案許可權資料許可權實踐

檔案許可權在基礎中有介紹,不在重複 一、資料夾許可權:   示例:      解釋說明:   r --read  既ls   w --write     既建立新的目錄或者檔案   x --execute 既cd 現在有4個使用者分屬3個不同的使用者組,如下:

Linux檔案資料許可權解讀

首先來檢視一下當前目錄下的檔案內容吧: ls -l 檢視當前目錄下的檔案列表 ls -ld 目錄名稱 檢視指定資料夾許可權 ls -l xxx.xxx (xxx.xxx是檔名) 檢視指定的檔案 我們可以看到檔案的許可權,-rw-rw-r-- 

Linux Desktop下檔案管理導航資料設定

在ubuntu系統中,我們開啟預設的檔案管理器,檔案管理器左側欄會看到home,桌面,視訊,圖片等目錄的導航欄,以便我們能快速的找到我們需要的檔案。 問題是這些導航的資料夾的路徑可以更改麼? 答

linux c建立資料,並在資料建立檔案

************************************************************************************************************ 建立資料夾,在在檔案裡面建立檔案: 一個例項: #inc

Linux 建立使用者、賦予使用者許可權、修改資料許可權、修改只讀檔案

建立使用者 # useradd work 設定使用者密碼 # passwd work 賦予使用者許可權 方法一: 修改 /etc/sudoers 檔案,找到下面一行,把前面的

linux 下修改資料的使用者許可權和所屬組,為檔案建立軟連線

chown wlq testfilwe //為資料夾testfile更改擁有者為wlq chgrp [-r] wlq testfile //為資料夾testfile更改擁有者組為wlq sudo du -sh /home/* //檢視一臺機器上

使用Java修改Linux檔案資料許可權

今天做功能碰到了一個情況: 需要在程式中自動在linux的根目錄建立一個路徑,並往裡存圖片。 開始只是簡單的將圖片移動到指定的路徑中,竟然無法訪問。竟分析後發現是因為資料夾和檔案的許可權不夠導致。 以下程式碼是將資料夾和檔案的許可權進行修改的: /** * 圖片上傳* @p

linux中將檔案或者資料許可權分配給某個使用者

現有個使用者tom,他是可以對 /home/tom 資料夾下的任何檔案進行任何操作的,如果想給他分配 /opt/test 資料夾的許可權,需要 1:chown -R tom /opt/test 此命令是指定test資料夾的所有者是tom,-R是遞迴。如果test是檔案就去掉

Linux 下統計資料檔案的數量

方法一: 這裡涉及幾個命令: 命令1: ls -l === ll 其實不用太多解釋,這個是入門命令,當然,還有-R引數。列出子目錄和檔案 命令2: grep “^-” grep我的理解是GNU正則(GNU regular expression)的縮寫,這裡是匹配

Linux資料許可權777,無法建立檔案

問題描述 在linux系統中,使用mysql匯出csv檔案,預設資料夾是/tmp目錄,可以匯出成功,然後我在/tmp/下面建立了一個lx目錄,並將/tmp/lx的許可權設定為777,也就是/tmp與/tmp/lx的許可權都是777,再將mysql資料匯出到lx

linux刪除指定資料某個檔案除外的其他檔案

# shopt -s extglob # rm -fr !(file1) 如果是多個要排除的,可以這樣: # rm -rf !(file1|file2) 首先科普下shopt -s extglob Bash Shell有個extglob選項,開啟之後Shell可以另外識別出5個模式匹配操作符,能使檔

Ubuntu Linux查詢、修改檔案資料許可權

1、檢視檔案及資料夾許可權:ls -l 檔名稱,ls -ld 資料夾名稱         在住資料夾下新建一個空白文件nihao,建立資料夾hello            命令:ls -l nihao 檢視文件的的許可權                  -rw-rw-r

linux利用scp遠端上傳下載檔案/資料

scp是secure copy的簡寫,用於在Linux下進行遠端拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器,而且scp傳輸是加密的。可能會稍微影響一下速度。 當你伺服器硬碟變為只讀 read only system時,用scp可

Linux command: 統計資料下的檔案數目

Linux下有三個命令:ls、grep、wc。通過這三個命令的組合可以統計目錄下檔案及資料夾的個數。 統計當前目錄下檔案的個數(不包括目   1   $ ls -l | grep "^-" | wc -l

【注意】關於WEBCONTENT新建資料下的JSP檔案出現404問題

      最近犯了一個很蠢的錯誤,本來我在ECLIPSE 的WEBCONTENT中新建了個資料夾用來存放新的程式碼。       但是就在這時,我去新建個HTML檔案,起名為測試1.html,結