1. 程式人生 > >C語言再學習 -- 修改linux檔案許可權

C語言再學習 -- 修改linux檔案許可權

Linux系統中的每個檔案和目錄都有訪問許可許可權,用它來確定誰可以通過何種方式對檔案和目錄進行訪問和操作。

檔案或目錄的訪問許可權分為只讀,只寫和可執行三種。(0無許可權,1可執行,2可寫,4可讀)
以檔案為例,只讀許可權表示只允許讀其內容,而禁止對其做任何的更改操作。可執行許可權表示允許將該檔案作為一個程式執行。檔案被建立時,檔案所有者自動擁有對該檔案的讀、寫和可執行許可權,以便於對檔案的閱讀和修改。使用者也可根據需要把訪問許可權設定為需要的任何組合。

有三種不同型別的使用者可對檔案或目錄進行訪問:檔案所有者,同組使用者、其他使用者。所有者一般是檔案的建立者。所有者可以允許同組使用者有權訪問檔案,還可以將檔案的訪問許可權賦予系統中的其他使用者。在這種情況下,系統中每一位使用者都能訪問該使用者擁有的檔案或目錄。

每一檔案或目錄的訪問許可權都有三組,每組用三位表示,分別為檔案屬主的讀、寫和執行許可權;與屬主同組的使用者的讀、寫和執行許可權;系統中其他使用者的讀、寫和執行許可權。當用ls -l命令顯示檔案或目錄的詳細資訊時,最左邊的一列為檔案的訪問許可權。例如:

$ ls -l sobsrc. tgz
-rw-r--r-- 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

橫線代表空許可,r代表只讀,w代表寫,x代表可執行。注意這裡共有10個位置。第一個字元指定了檔案型別。在通常意義上,一個目錄也是一個檔案。

如果第一個字元含義:

-  普通檔案

d  目錄

s  本地套接字

c  字元裝置

b  塊裝置

l  符號連結

p  有名管道

[email protected]:/opt# ls -la 
總用量 32
drwxr-xr-x  8 root root  4096 10月 21 11:28 .
drwxr-xr-x 23 root root  4096  9月 20 13:18 ..
drwxrwxr-x  3 zslf zslf  4096  9月 27 13:03 ethtool-4.6
drwxr-xr-x  4 root root  4096  9月 28 10:46 file
drwxr-xr-x  3 root root  4096  9月  5 19:14 hisi-linux
drwxr-xr-x  8  501 users 4096  9月 21 19:21 i2c-tools-3.0.1
drwxr-xr-x  9 root root  4096 10月 28 14:43 mpp
drwxr-xr-x 20 root root  4096  9月 19 15:47 rootfs_uclibc
例如:
 - rw- r-- r--
普通檔案 檔案主 組使用者 其他使用者
是檔案sobsrc.tgz 的訪問許可權,表示sobsrc.tgz是一個普通檔案;sobsrc.tgz的屬主有讀寫許可權;與sobsrc.tgz屬主同組的使用者只有讀許可權;其他使用者也只有讀許可權。

確定了一個檔案的訪問許可權後,使用者可以利用Linux系統提供的chmod命令來重新設定不同的訪問許可權。也可以利用chown命令來更改某個檔案或目錄的所有者。利用chgrp命令來更改某個檔案或目錄的使用者組。


下面分別對這些命令加以介紹。
chmod 命令
chmod命令用於改變檔案或目錄的訪問許可權
。使用者用它控制檔案或目錄的訪問許可權。
該命令有兩種用法。一種是包含字母和操作符表示式的文字設定法;另一種是包含數字的數字設定法。

1. 文字設定法


chmod [who] [+ | - | =] [mode] 檔名?

命令中各選項的含義為:
操作物件who可是下述字母中的任一個或者它們的組合:
u   表示“使用者(user)”,即檔案或目錄的所有者。
g   表示“同組(group)使用者”,即與檔案屬主有相同組ID的所有使用者。
o   表示“其他(others)使用者”。
a   表示“所有(all)使用者”。它是系統預設值。

操作符號可以是:
+   新增某個許可權。
-    取消某個許可權。
=   賦予給定許可權並取消其他所有許可權(如果有的話)。

設定mode所表示的許可權可用下述字母的任意組合:
r    可讀。
w   可寫。
x    可執行。
X   只有目標檔案對某些使用者是可執行的或該目標檔案是目錄時才追加x 屬性。
s    在檔案執行時把程序的屬主或組ID置為該檔案的檔案屬主。方式“u+s”設定檔案的使用者ID位,“g+s”設定組ID位。
t    儲存程式的文字到交換裝置上。
u   與檔案屬主擁有一樣的許可權。
g   與和檔案屬主同組的使用者擁有一樣的許可權。
o    與其他使用者擁有一樣的許可權。

檔名:以空格分開的要改變許可權的檔案列表,支援萬用字元。
在一個命令列中可給出多個許可權方式,其間用逗號隔開。例如:chmod g+r,o+r example
使同組和其他使用者對檔案example 有讀許可權。

例1:$ chmod a+x sort
即設定檔案sort的屬性為:
檔案屬主(u) 增加執行許可權,與檔案屬主同組使用者(g) 增加執行許可權,其他使用者(o) 增加執行許可權。

例2:$ chmod ug+w,o-x text
即設定檔案text的屬性為:
檔案屬主(u) 增加寫許可權,與檔案屬主同組使用者(g) 增加寫許可權,其他使用者(o) 刪除執行許可權。

例3:$ chmod u+s a.out
假設執行chmod後a.out的許可權為(可以用ls – l a.out命令來看):
–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out

並且這個執行檔案要用到一個文字檔案shiyan1.c,其檔案存取許可權為“–rw-------”,即該檔案只有其屬主具有讀寫許可權。

當其他使用者執行a.out這個程式時,他的身份因這個程式暫時變成inin(由於chmod命令中使用了s選項),所以他就能夠讀取shiyan1.c這個檔案(雖然這個檔案被設定為其他人不具備任何許可權),這就是s的功能。
因此,在整個系統中特別是root本身,最好不要過多的設定這種型別的檔案(除非必要)這樣可以保障系統的安全,避免因為某些程式的bug而使系統遭到入侵。

例4:

$ chmod a–x mm.txt
$ chmod –x mm.txt
$ chmod ugo–x mm.txt
以上這三個命令都是將檔案mm.txt的執行許可權刪除,它設定的物件為所有使用者。


2. 數字設定法 (重點)
我們必須首先了解用數字表示的屬性的含義:0表示沒有許可權,1表示可執行許可權,2表示可寫許可權,4表示可讀許可權,然後將其相加。所以數字屬性的格式應為3個從0到7的八進位制數,其順序是(u)(g)(o)。

例如,如果想讓某個檔案的屬主有“讀/寫”二種許可權,需要把4(可讀)+2(可寫)=6(讀/寫)。
數字設定法的一般形式為:
chmod [mode] 檔名?


例1: $ chmod 644 mm.txt

$ ls –l
-rw-r--r-- 1 inin users 1155 Nov 5 11:22 mm.txt
即設定檔案mm.txt的屬性為:

檔案屬主(u)inin 擁有讀、寫許可權,與檔案屬主同組人使用者(g) 擁有讀許可權,其他人(o) 擁有讀許可權。

例2: $ chmod 750 wch.txt

$ ls –l
-rwxr-x--- 1 inin users 44137 Nov 12 9:22 wchtxt
即設定wchtxt這個檔案的屬性為:
檔案主本人(u)inin 可讀/可寫/可執行權,與檔案主同組人(g) 可讀/可執行權,其他人(o) 沒有任何許可權。

chgrp命令
功能:改變檔案或目錄的屬組。

語法:chgrp [選項] group filename?

該命令改變指定指定檔案所屬的使用者組。其中group可以是使用者組ID,也可以是/etc/group檔案中使用者組的組名。檔名是以空格分開的要改變屬組的檔案列表,支援萬用字元。如果使用者不是該檔案的屬主或超級使用者,則不能改變該檔案的組。

該命令的各選項含義為:
- R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的屬組。

例1:$ sudo chgrp - R book /opt/local /book
改變/opt/local /book/及其子目錄下的所有檔案的屬組為book。


例2: sudo chgrp -R zslf test 
將test目錄所在的組由root修改為zslf組
[email protected]:/mnt# ls -la test/
總用量 8
drwxr-xr-x 2 root zslf 4096 11月 24 17:20 .
drwxr-xr-x 5 root root 4096 11月 24 17:20 ..

chown 命令
功能:更改某個檔案或目錄的屬主和屬組。
這個命令也很常用。例如root使用者把自己的一個檔案拷貝給使用者xu,為了讓使用者xu能夠存取這個檔案,root使用者應該把這個檔案的屬主設為xu,否則,使用者xu無法存取這個檔案。

語法:chown [選項] 使用者或組 檔案
說明:chown將指定檔案的擁有者改為指定的使用者或組。使用者可以是使用者名稱或使用者ID。組可以是組名或組ID。檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。

該命令的各選項含義如下:
- R 遞迴式地改變指定目錄及其下的所有子目錄和檔案的擁有者。
- v 顯示chown命令所做的工作。

例1:sudo chown  -R zslf test 
將test目錄下的所有檔案和子目錄的屬主由root改為zslf

[email protected]:/mnt# ls -la test/
總用量 8
drwxr-xr-x 2 zslf root 4096 11月 24 17:20 .
drwxr-xr-x 5 root root 4096 11月 24 17:20 ..
例2:sudo chown -R zslf.zslf test
[email protected]:/mnt# ls -la test/
總用量 8
drwxr-xr-x 2 zslf zslf 4096 11月 24 17:33 .
drwxr-xr-x 5 root root 4096 11月 24 17:20 ..
-rw-r--r-- 1 zslf zslf    0 11月 24 17:33 hh
將test目錄下的所有檔案和子目錄的屬主由root改為zslf,屬組有root改為zslf。


相關推薦

C語言學習 -- 修改linux檔案許可權

Linux系統中的每個檔案和目錄都有訪問許可許可權,用它來確定誰可以通過何種方式對檔案和目錄進行訪問和操作。檔案或目錄的訪問許可權分為只讀,只寫和可執行三種。(0無許可權,1可執行,2可寫,4可讀)以檔

C語言學習 -- 檔案

檔案是什麼 一個檔案(file)通常就是磁碟上的一段命名的儲存區。C 將檔案看成是連續的位元組序列,其中每一個位元組都可以單獨地讀取。 二進位制和文字模式 1、在windows系統中,文字模式

C語言學習 -- Linux下find命令用法

linux下查詢檔案的命令有兩個:locate 和 find 首先說一下locate: 這個命名是對其生成的資料庫進行遍歷(生成資料庫的命令:uodatedb),這一特性決定了用locate查詢檔案速度很快,但是locate命令只能對檔案進行模糊匹配,在精度上來說差了點,

C語言學習 -- 關鍵字struct(轉)

結構體的一般定義形式為: 標籤(tag)欄位允許為成員列表提供一個名字,這樣它就可以在後續的宣告中使用。標籤允許多個宣告使用同一個成員列表,並且建立同一種類型的結構。 struct 標籤{ 型別名1 成員名1; 型別名2 成員名2; …… 型別名n 成員名n;    }結構體變數;

C語言學習-定義變數

當我們在c語言裡建立一個變數的時候 int x = 5; int y = 6; 00C517B8 mov dword ptr [x],5 00C517BF mov dword ptr [y],6 實際上在彙編層面,

C語言學習5-陣列與優化

什麼是陣列?為什麼要用陣列? 通俗來講,在記憶體中一塊連續儲存資料的叫陣列,陣列的每個子元素的寬度都一樣,並且只能為通用的資料型別做單位(char,short,int等等) 讓我們先定義一個數組,然後賦值: char arr1[2] = { 0 }; arr1

C語言學習7-結構體

為什麼使用結構體? struct My { char name[20] = "如風斬嶽"; int age; char addr[50] ; int money; double Coordinates; //..... }; 當我們有這樣一種需求,

C語言學習--關鍵字

C語言一共有32個關鍵字,如下表所示: 關鍵字 說明 auto 宣告自動變數 short 宣告短整型變數或函式 int

C語言學習 -- 負數

有符號數的表示方法是由硬體決定,而不是由C決定的。有三種表示方法: 1、二進位制原碼 0000 0001  表示 1 1000 0001  表示 -1 這個方法有個缺點是有兩個零: +0 和 -0。這會引起混淆,而且用兩個位

C語言-自我學習-讀寫檔案

人懶要多記筆記 C語言讀寫檔案 End Of File,在電腦的術語縮寫通常為 EOF,在作業系統決定資料源無更多的資料可讀取。資料源通常稱為檔案或串流。 關鍵物件 fopen ->應該是指向Fileopen物件 fprintf ->應該

C語言學習 -- ASCII碼錶(轉)

ASCII碼錶第一部分:ASCII非列印控制字元表ASCII表上的數字0–31分配給了控制字元,用於控制像印表機等一些外圍裝置。例如,12代表換頁/新頁功能。此命令指示印表機跳到下一頁的開頭。(參詳ASCII碼錶中0-31)第二部分:ASCII列印字元數字 32–126 分配給了能在鍵盤上找到的字元,當您檢視

【 分類 】- C語言學習

專欄達人 授予成功建立個人部落格專欄

看書學習linux檔案許可權

一.檔案屬性 [[email protected] Desktop]$ ls -al total 1322772 drwxr-xr-x   9 kiosk kiosk       4096 Dec 29 18:40

C語言學習 -- 詳解C++/C 面試題 1

對這篇文章記憶猶新,因為之前找工作面試的時候,遇到過一家公司就是用的這套面試題。現在就結合考查的知識點和我總結完 C 語言再學習後的深入理解,來詳細的講講我對這篇文章的總結。 一、請填寫BOOL ,

修改linux檔案許可權命令:chmod

Linux系統中的每個檔案和目錄都有訪問許可許可權,用它來確定誰可以通過何種方式對檔案和目錄進行訪問和操作。   檔案或目錄的訪問許可權分為只讀,只寫和可執行三種。以檔案為例,只讀許可權表示只允許讀其內容,而禁止對其做任何的更改操作。可執行許可權表示允許將該檔案作為一個程式

C語言學習 -- 論記憶體管理

但現在看來,缺少示例。從新再寫一篇文章,著重介紹常見記憶體錯誤、跨函式使用儲存區。開始吧,再論記憶體管理!!發生記憶體錯誤是件非常麻煩的事情。編譯器不能自動發現這些錯誤,通常是在程式執行時才能捕捉到。而這些錯誤大多沒有明顯的症狀時隱時現增加了改錯的難度。一、常見的記憶體錯誤及

C語言學習 -- 記憶體管理

malloc ( )函式: malloc ( ) 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void* 型別。void* 表示未確定型別的指標。C,C++規定,void* 型別可

C語言學習 -- 關鍵字typedef

一、typedef 介紹 typedef為C語言的關鍵字,作用是為一種資料型別定義一個新名字。比如人們常常使用 typedef 來編寫更美觀和可讀的程式碼。所謂美觀,意指 tepe

C語言學習 -- 時間函式

gmtime函式:可以把time函式得到的結果按照格林尼治時間轉換成一個結構體localtime函式:可以把time函式得到的結果按照當前時區轉換成一個結構體asctime函式:可以把一個記錄時間的結構體轉換成字串,一般與上兩個函式合用的格林時間,與北京時間換算,/* 時間函式演示 */ #

C語言學習 -- 論陣列和指標

之前有總結指標陣列,但是現在看來總結的太簡單了。好多重要的知識點都是一帶而過的。本想在後面新增後來想想算了,還是再寫一篇文章來詳細介紹陣列和指標這對冤家吧。一開始覺得C語言再學習專欄都寫了五十篇了,現在