(2 8)檔案和目錄操作 Linux檔案許可權管理

2021-10-01 03:16:29 字數 2944 閱讀 5700

函式功能: 按照前述檔案許可權檢查的4個步驟測試訪問檔案是否具有相應許可權

函式原型: int access( const char *pathname,

int mode)

pathname:所要操作的檔案路徑名

函式原型

int chmod(const char * pathname, mode_t mode)

;int fchmod(

int fd, mode_t mode)

;函式用途: 改變指定檔案的許可權位。

函式說明:

chmod要求給出的是檔案或目錄所在的位置, 而fchmod主要針對的是檔案, 要求呼叫是相應的檔案描述符。

修改時, 程序的有效使用者id必須等於檔案的所有者id, 或是root執行的此程序

函式原型

➢ int chown( const char *pathname, uid_t owner, gid_t group)

;➢ int fchown(

int filedes, uid_t owner, gid_t group)

;➢ int lchown( const char *pathname, uid_t owner, gid_t group)

;函式用途: 更改檔案的使用者id和組id。 成功返回0, 若出錯則返回-

1函式說明:

➢ 如果兩個引數owner或group中的任意乙個是-

1, 則不改變檔案所有者或檔案所屬使用者組

➢ lchown是改變符號鏈結本身的所有者, 而不是該符號鏈結所指向的檔案

➢ 基於bsd的系統中, 只有超級使用者才能更改乙個檔案的所有者

➢ 非超級使用者程序呼叫,則在成功返回時, 該檔案的設定使用者id位和設定組id位會被清除

函式原型: int link ( const char *pathname, const char *newpath)

;函式用途: 任何乙個檔案可以有多個目錄項指向其索引節點, 建立乙個指向現有檔案的新目錄項

函式說明

➢ 此函式建立乙個新目錄項newpath, 它指向pathname指向的檔案。 如果newpath已經存在, 則返回出錯(可以使用新名字

對檔案進行操作,這些名字都指向同乙個檔案,都具有相同的許可權和擁有者)

➢ 建立新目錄項以及增加連線計數是乙個原子操作(不會被os打斷)。

➢ 大多數的系統規定, 只有超級使用者可以建立指向乙個目錄的新連線, 目的是在檔案系統中形成迴圈。

函式原型及標頭檔案

➢ int unlink ( const char *pathname)

; (unistd.h)

➢ int remove( const char *pathname); ( stdio.h)

函式用途:

➢ unlink刪除目錄項, 並將由pathname所引用檔案的鏈結計數減1, 清空這個檔案使用的可用的系統資源(若pathname是乙個符號鏈結,

他只會刪除符號鏈結,而不會刪除符號鏈結所引用的檔案)

➢ remove刪除乙個目錄中的乙個或多個檔案或目錄, 也可以將某個目錄及其下的所有檔案及子目錄均刪除

共同點及差異

➢ unlink是系統呼叫, 而remove是庫函式

➢ remove的引數為普通檔案時等價於unlink

函式原型: int rename ( const char * oldname, const char * newname)

;函式用途: 更名檔案或目錄

函式說明

➢ 如果oldname是乙個檔案而不是目錄, 那麼為該檔案更名

➢ 如果oldname是乙個目錄, 那麼為該目錄更名

➢ 如果oldname和newname引用同一檔案, 則函式不做任何更改而成功返回

➢ 應對包含兩個檔案的目錄具有寫和執行許可權

函式原型: int utime( const char *pathname, const struct utimbuf *times)

;函式用途: 設定訪問和修改檔案的時間

函式說明: 此函式的操作以及執行它所要求的優先權取決於time引數是否是null

➢ 如果times是乙個null, 則訪問時間和修改時間兩者都設定為當前時間, 但必須滿足下面二者之一: (1)

程序的有效使用者id必須等於該檔案的所有者(2) 程序對該檔案有寫許可權

➢ 如果times是非空指標, 則訪問時間和修改時間被設定為times所指向的時間, 此時程序的有效使用者id必須等

於該檔案的所有者id, 或者程序必須是超級使用者的程序。

函式原型: int mkdir(const char *pathname, mode_t mode)

;函式用途: 建立乙個新的空目錄, 其中的. 和 .

. 兩個目錄項由系統自動建立。

函式說明:

➢ 如果在目錄名的前面沒有加任何路徑名, 則在當前目錄下建立由pathname指定的目錄

➢ 如果給出了乙個已經存在的路徑, 將會在該目錄下建立乙個指定的目錄

➢ 在建立目錄時, 應保證新建的目錄與它所在目錄下的檔案沒有重名

➢ 在建立檔案時, 不要把所有的檔案都存放在主目錄中, 可以建立子目錄, 來更有效地組織檔案

函式原型: int rmdir( const char *pathname)

;函式用途: 刪除乙個空目錄

函式說明:

➢ 如果此呼叫使目錄的連線計數成為0, 並且也沒有其他程序開啟此目錄, 則釋放由此目錄占用的空間

➢ 如果連線計數為0, 但有程序開啟了此目錄, 則在此函式返回前, 刪除. 和 .

. 項。 在此目錄中不能再建立新文

件。 但是在最後乙個程序關閉之前並不釋放此目錄

28 檔案基本操作

計算機上面的檔案操作步驟 寫,將記憶體的內容寫入檔案 第三步,關閉檔案 那麼在python環境中呢?序號函式 方法 說明01 open python層面的方法 開啟檔案 02read 檔案內的方法 從cpu中讀取檔案,並且讀取全部檔案 03write 檔案內的方法 修改內容 04close 檔案內的...

6 檔案 目錄操作

with open filepath,r as f f.read 呼叫read 會一次性讀取檔案的全部內容,如果檔案有10g,記憶體就爆了,可以反覆呼叫read size 方法,每次最多讀取size個位元組的內容。呼叫readline 可以每次讀取一行內容,呼叫readlines 一次讀取所有內容並...

Linux 3 檔案和目錄基本操作

檔案和目錄基本操作 根據命令的存在狀態,可以把命令分為 內部命令 和 外部命令 內部命令是系統shell內建的命令,在磁碟中沒有相應的可執行檔案,而外部命令是系統在安裝時安裝時就安裝好地可執行檔案和或程式,如系統 bin sin等目錄下存放可執行檔案。linux系統中命令區分大小,如ls和ls是不相...