文件的访问权限控制

时间:2022-10-28 09:59:11

      linux是一个安全的操作系统,它对用户访问权限的控制很好的实现了安全控制。但是,你要是想知道文件的相关属性,你会在shell下使用什么命令来实现呢?

      要查看文件的属性,只需在shell下通过命令ls -l<filename>你可以先通过命令ls -l 来查看你目录下所有文件的属性。再通过ls -l<filename>命令来具体到某一个文件 .例如,我用ls -l 来查看我所有文件的属性如下:

文件的访问权限控制

        我在我的终端下通过输入 ls -l test.c来查看文件test.c的文件属性.

        dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ ls -l test.c
       -rw-rw-r-- 1 dongmengyuan dongmengyuan 1185 6月  17 21:17 test.c

    

      比如,上面的运行结果从左至右依次是:文件属性  文件数  所有者  拥有该文件的用户所属的组  文件大小   文件创建时间   文件名。

      第一项文件属性总共由10位组成,第一位表示文件类型。剩下9 位都表示文件的访问权限,可以按照3个一组分为3组,从左至右,第一组表示文件所有者对该文件的操作权限,第二组表示与文件所有者同组的用户对该文件的操作权限,第三组表示其他用户对该文件的操作权限.由上图,我们可以清楚的知道每组只能出现3种字母,即r,w,x.  其中r 表示可读(read),w表示可写(write),x表示可执行。对于可读,可写,可执行3种权限,他们分别对应一个值。

     r=4    w=2   x=1. 

     4+2+1=7.     所以777表示文件所有者,所属组,其他用户都拥有读,写,可执行3种权限。

     然而,有时候由于某些原因,我们必须要修改文件访问权限来提高安全指数,那么在shell下我们应该怎么做呢?

     对文件权限的修改在shell下可通过命令chmod来进行。比如

     在shell下man 2 chmod 可以查看 chmod/fchmod 的函数原型如下


        #include <sys/types.h>

        #include <sys/stat.h>

        int chmod(const char *pathname, mode_t mode);
        int fchmod(int fd, mode_t mode);

     

    例:我的test.c的访问权限是-rw-rw-r--.即664.

    我在shell下通过命令 chmod 777 test.c 将它的权限修改为:所有者,所属组,其他用户都拥有读,写,可执行权限。具体用法大家可以参考man chmod.

      dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ chmod 777 test.c
      dongmengyuan@dongmengyuan-Lenovo-G50-45:~$ ls -l test.c
      -rwxrwxrwx 1 dongmengyuan dongmengyuan 1185 6月  17 21:17 test.c

     chmod / fchmod 的区别在于chmod 以文件名作为第一个参数,fchmod以文件描述符作为第一个参数。

     权限修改成功返回0,失败返回-1。错误代码会存于系统预定义变量errno中。

      所以,为了提高文件的安全指数,大家都试试这几个简单有效的shell命令吧文件的访问权限控制