歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統的umask函數

Linux系統的umask函數

日期:2017/2/27 15:47:09   编辑:Linux教程

Unix系統文件及其權限簡介

在Unix系統中,所有文件類型都有訪問權限。文件類型分為:普通文件(regular file),目錄文件(directory file),塊特殊文件(block special file),字符特殊文件(character special file),FIFO,套接字(socket),符號鏈接(symbolic link)。下面分別對它們進行簡單的介紹:

普通文件(regular file)

這種文件包含了某種形式的數據,至於是文本還是二進制,Unix內核並不關心。對普通文件內容的解釋由處理該文件的應用程序進行。

目錄文件(directory file)

該文件包含了其他文件的名字以及指向其他文件的指針。對一個目錄文件具有讀權限的任意進程意味著可以讀該目錄的內容,但是只有內核可以直接寫目錄文件。

塊特殊文件(block special file)

這種文件提供對設備(如磁盤)帶緩沖的訪問,每次訪問以固定長度為單位進行。

字符特殊文件(character special file)

這種類型文件提供對設備不帶緩沖的訪問,每次訪問長度可變。系統中的所有設備要麼是字符特殊文件,要麼是塊特殊文件。

FIFO

用於進程間通信,有時也稱為命名管道。

套接字(socket)

用於進程間網絡通信,也可以用於在一台宿主機上進程之間的非網絡通信。

符號鏈接(symbolic link)

這種文件指向另一個文件。

stat結構中的st_mode成員

文件類型 S_ISREG() 普通文件 S_ISDIR() 目錄文件 S_ISCHR() 字符特殊文件 S_ISBLK() 塊特殊文件 S_ISFIFO() 管道或FIFO S_ISLNK() 符號鏈接 S_ISSOCK() 套接字

stat函數通常用於查看文件的信息結構,stat結構體一共有13個成員,如下面代碼所示:

zzw@zzw-ThinkPad-Edge-E430c:~$ stat wifi.sh
  文件:"wifi.sh"
  大小:70         塊:8          IO 塊:4096   普通文件
設備:80ah/2058d   Inode:922048      硬鏈接:1
權限:(0755/-rwxr-xr-x)  Uid:( 1000/     zzw)   Gid:( 1000/     zzw)
最近訪問:2015-08-01 13:32:55.585847606 +0800
最近更改:2015-07-30 21:33:20.000000000 +0800
最近改動:2015-08-01 13:32:33.017846764 +0800

文件訪問權限

9個訪問權限位

每個文件有9個訪問權限位,可將它們分為3類:

S_IRUSR 用戶讀

S_IWUSR 用戶寫

S_IXUSR 用戶執行

S_IRGRP 組讀

S_WGRP 組寫

S_XGRP 組執行

S_IROTH 其他讀

S_IWOTH 其他寫

S_IXOTH 其他執行

創建文件模式屏蔽字

umask函數為每一個進程設置文件模式創建屏蔽字,並返回之前的值。

#include<sys/stat.h>

mode_t umask(mode_t cmask);

Unix系統的多數用戶從不處理umask值。通常在登陸時,由shell的啟動文件設置一次,然後,再不改變。盡管如此,如果我們在創建文件時,要保證制定權限位已經激活,那麼必須顯示修改umask。

可以通過設置umask值來控制我們所創建文件的默認權限。該值為八進制數,一位代表要屏蔽的權限,如下所示:

0400 用戶讀

0200 用戶寫

0100 用戶執行

0040 組讀

0020 組寫

0010 組執行

0004 其他讀

0002 其他寫

0001 其他執行

默認情況下,shell進程的umask值為002,即其他沒有執行的權限。

可以使用umask -S來打印權限。也可以通過例如umask 027來設置其值為027。

Copyright © Linux教程網 All Rights Reserved