Linux文件权限与chmod命令简介

2020-07-13  本文已影响0人  LittleMagic

前言

最近一段时间忙大项目,抽空写篇流水账,然后趁早休息。

Linux系统的文件权限用来决定哪些用户和组可以对文件执行何种操作,以保证安全性。笔者试图不参考其他资料,按照记忆快速总结之。

文件权限

我们都知道,通过ls -l/ll命令能够以长形式显示出文件的各种属性。例:

~ ll -h /etc
total 1.6M
# 类型和权限|链接数|所有者|所属组|大小|最后修改时间|名称
-rw-r--r--.  1 root       root         16 Dec  3  2018 adjtime
-rw-r--r--.  1 root       root       1.5K Jun  7  2013 aliases
-rw-r--r--   1 root       root        12K Nov 29  2018 aliases.db
drwxr-xr-x.  2 root       root       4.0K Jun  4 17:57 alternatives
-rw-------.  1 root       root        541 Apr 11  2018 anacrontab
-rw-r--r--.  1 root       root         55 Apr 11  2018 asound.conf
-rw-r--r--   1 root       root          1 Apr 11  2018 at.deny
drwxr-x---.  3 root       root       4.0K Nov 29  2018 audisp
drwxr-x---.  3 root       root       4.0K Nov 29  2018 audit
drwxr-xr-x.  2 root       root       4.0K Jul  2 14:41 bash_completion.d
-rw-r--r--.  1 root       root       2.8K Apr 11  2018 bashrc
drwxr-xr-x.  2 root       root       4.0K Sep 27  2018 binfmt.d
-rw-r--r--   1 root       root         38 Oct  8  2018 centos-release
-rw-r--r--   1 root       root         51 Oct  8  2018 centos-release-upstream
drwxr-xr-x.  2 root       root       4.0K Aug  4  2017 chkconfig.d
-rw-r--r--.  1 root       root       1.9K Jun  4 11:01 chrony.conf
-rw-r-----.  1 root       chrony      481 Sep 15  2017 chrony.keys
drwxr-xr-x   3 clickhouse clickhouse 4.0K Jul  6 15:45 clickhouse-client

我们要关心的是第1列,以drwxr-xr-x为例:

所以,drwxr-xr-x就意味着文件所有者拥有目录的读、写、执行权限,文件所属组拥有读、执行权限,其他用户拥有读、执行权限。

多说一句,只有用户对目录拥有执行权限,才能使用cd命令进入目录,以及访问目录下的文件数据,所以我们看到的绝大多数目录都会带有x。如果只有r的话,那么用户仅能通过ls命令列出目录的文件清单,其他什么都做不了。

八进制表示法

对于每一组rwx,将拥有的权限视为二进制1,不拥有的权限视为二进制0,即可形成一个八进制数字,如:

将文件所有者、文件所属组和其他用户的权限排列起来,就是完整的数字权限表示,如上文的drwxr-xr-x就是755。

多说第二句,Linux系统中创建新文件时的默认权限就是由八进制表示法的掩码决定,可以通过umask命令获取及设置此掩码。一般来讲,这个掩码是0022(最高位表示附加权限,本文不表)。所以:

chmod命令

chmod命令用于更改文件权限,它有两种使用方式。

字符串设定

此种方式的语法为:

chmod [role][+|-|=][mode] [filename]

其中,role表示要更改权限的角色,可以是如下字符或它们的组合:

后面的符号则比较容易理解,+表示添加权限,-表示取消权限,=表示直接赋予权限。举例:

# 等同于chmod +x my_script.sh
chmod a+x my_script.sh
chmod ug-w,o=r my_script.sh

八进制设定

此种方式不提供上一种方式的+-语义,只有=语义,其语法为:

chmod [octal] filename

octal就是上面说过的八进制表示法,举例:

# rwxr-x---
chmod 750 my_script.sh

最后,如果要递归地改变目录与其所有子目录以及文件的权限,在chmod后紧跟-R即可。

The End

零散写了一点,各位当睡前读物随便看看吧。

晚安晚安。

上一篇下一篇

猜你喜欢

热点阅读