首页 > 代码库 > 文件权限管理

文件权限管理

一.Linux文件权限管理
    1.st_mode
        (1)st_mode中记录了文件的权限,他其实就是一个32位的数,unsigned long型的。
        (2)st_mode是在调用系统API stat函数时由内核自动写入的
    2.权限列表
        (1)一共9位,3个一组。第一组表示文件的属主(owner、user)对该文件的可读、可写、可执行权限;第二组是属主所在的组group对该文件的权限;第三组是其他others对该文件的权限。
        (2)一般是谁创建的文件,属主就是谁。
        (3)可以通过chmod更改权限,chown更改属主,chgrp更改所在的组。
    3.access函数检查权限
        (1)设计好的软件应该是,在操作某个文件之前先判断当前是否有权限做这个操作,如果有权限则继续操作,否则提供错误信息给用户。
        (2)access函数可以测试得到当前执行程序的那个用户在当前环境下对目标文件是否具有某种操作权限。
        (3)access函数原型
            #include <unistd.h>
            int access(const char *pathname,int mode);
            //mode:R_OK, W_OK, X_OK, F_OK    F_OK测试文件是否存在
            //返回0表示:是,-1表示:否
    4.chmode/fchmod与权限修改
        (1)chmod是Linux的一个命令,只有root用户才有权利执行修改权限。
        (2)chmod命令是调用系统API的函数chmod函数来实现的。
    5.chown/fchown/lchown与属主修改

    6.umask与文件权限掩码
        (1)文件掩码是Linux系统中维护的一个全局设置。
        (2) umask设置了用户创建文件时的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
        (3)umask的用法:
                Linux命令行下:umask xxx(3位数字)
                            文件创建时一般默认是没有可执行权限的,而目录则允许。
                            umask是从文件中去掉某权限。
                例如:umask 002 创建文件时,文件的权限就是664,创建目录时,目录权限就是775



来自为知笔记(Wiz)


文件权限管理