LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux教程 >

Linux系统的umask函数

时间:2015-08-03 09:44来源:未知 编辑:linuxeye 点击:
Unix系统文件及其权限简介 在Unix系统中,所有文件类型都有访问权限。文件类型分为:普通文件(regular file),目录文件(directory file),块特殊文件(block special file),字符特殊文件

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。

转载请保留固定链接: https://linuxeye.com/Linux/2761.html

------分隔线----------------------------
标签:umask
栏目列表
推荐内容