本文主要介绍在 linux
系统下文件权限配置,通过阅读该文,你会了解文件权限,同时能正确的配置文件权限,避免盲目操作。成文的原因也是因为自己在程序执行过程中一直会遇到这样的问题,所以最终专门整理了相关知识,希望也能帮到大家。
1. ls - l 命令讲解
我们可以通过 ls -l
命令查看除了文件名称外的其他信息,比如文件型态、权限、拥有者、文件大小等。
这里可以看来自网上的一幅图。
2. 如何设置权限
在我们能看懂文件权限后,就需要掌握怎么配置权限,这里主要讲解 chmod
和chown
两个命令。
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。
- 对于目录,直接使用 777-umask 即可,就得到了最终结果。
-
对于文件,先使用 666-umask。
- 如果对应位上为偶数:最终权限就是这个偶数值。
- 如果上面的对应为上有奇数,就对应位 +1。
掩码 | 目录 | 文件 |
---|---|---|
022 | 755 | 644 |
027 | 750 | 640 |
002 | 775 | 664 |
006 | 771 | 660 |
007 | 770 | 660 |
在终端直接执行 umask
只对本地登录有效,如果要永久修改,需要把内容 umask=022
写入到配置文件中,配置文件可以从下一章节中找到。
3.1 针对交互式登陆:
优先级从高到低。
- /etc/bashrc
- ~/.bashrc
- ~/.bash_profile
- /etc/profile.d/*.sh
- `/etc/profile
3.2 针对非交互登陆:
优先级从高到低。
- /etc/profile.d/*.sh
- /etc/bashrc
- ~/.bashrc
参考文档
- linux 下 umask 的使用讲解
- 如何设置 UNIX/Linux 中新创建目录或文件的默认权限
- 在 Linux 中执行命令 ls - l 文件中各个信息代表的含义图解
- 文件或目录权限 chmod, 更改所有者所属组 chown
本文同步发表于作者博客: linux 系统文件权限简明介绍