乐趣区

linux系统文件权限简明介绍

本文主要介绍在 linux 系统下文件权限配置,通过阅读该文,你会了解文件权限,同时能正确的配置文件权限,避免盲目操作。成文的原因也是因为自己在程序执行过程中一直会遇到这样的问题,所以最终专门整理了相关知识,希望也能帮到大家。

1. ls - l 命令讲解

我们可以通过 ls -l 命令查看除了文件名称外的其他信息,比如文件型态、权限、拥有者、文件大小等。

这里可以看来自网上的一幅图。

2. 如何设置权限

在我们能看懂文件权限后,就需要掌握怎么配置权限,这里主要讲解 chmodchown两个命令。

2.1 chmod

Linux/Unix 文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

// - R 表示级联更改
chmod [-R] xyz 文件名(这里的 xyz 表示数字)。

比如下面三种操作都是设置所有人可以读写及执行file

chmod 777 file  

chmod u=rwx,g=rwx,o=rwx file 

chmod a=rwx file

这里我们重点讲解下数字格式 777 指的是什么。

我们多数用三位八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过 4(r- 读)、2(w- 写)、1(x- 执行)三种数值的和来确定权限。如 6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。

按照上面的数值,r=4,w=2,x=1;
若要 rwx 属性则 4 +2+1=7;
若要 rw- 属性则 4 +2=6;
若要 r-x 属性则 4 +1=5;
若要 rwxrwxrwx 属性则 777;
若要 rwxr-xr-x 属性则 755;

2.2 chown

更改文件拥有者。

chown [-cfhvR] [--help] [--version] user[:group] file...

示例:

将文件 file1.txt 的拥有者设为 neo,群体的使用者 neogroup :

chown runoob:runoobgroup file1.txt

将目前目录下的所有文件与子目录的拥有者皆设为 neo,群体的使用者 neogroup:

chown -R neo:neogroup *

3. umask

umask命令可以指定在建立文件时预设的权限掩码。

[权限掩码]是由 3 个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。一般默认的值是 022,最终新创建的目录权限为 755,文件权限为 644。

  1. 对于目录,直接使用 777-umask 即可,就得到了最终结果。
  2. 对于文件,先使用 666-umask。

    • 如果对应位上为偶数:最终权限就是这个偶数值。
    • 如果上面的对应为上有奇数,就对应位 +1。
掩码 目录 文件
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660

在终端直接执行 umask 只对本地登录有效,如果要永久修改,需要把内容 umask=022 写入到配置文件中,配置文件可以从下一章节中找到。

3.1 针对交互式登陆:

优先级从高到低。

  1. /etc/bashrc
  2. ~/.bashrc
  3. ~/.bash_profile
  4. /etc/profile.d/*.sh
  5. `/etc/profile

3.2 针对非交互登陆:

优先级从高到低。

  1. /etc/profile.d/*.sh
  2. /etc/bashrc
  3. ~/.bashrc

参考文档

  • linux 下 umask 的使用讲解
  • 如何设置 UNIX/Linux 中新创建目录或文件的默认权限
  • 在 Linux 中执行命令 ls - l 文件中各个信息代表的含义图解
  • 文件或目录权限 chmod, 更改所有者所属组 chown

本文同步发表于作者博客: linux 系统文件权限简明介绍

退出移动版