Linux一般将文件可读写的身份分为3个类别,分别是拥有者(owner),所属群组(group),其他人(others),且三种身份各有读(read),写(write),执行(execute)等权限。
用户与用户组
1.文件拥有者
即用户,通常分为root和一般身份的用户,所有用户的相关信息都记录在/etc/passwd这个文件内,用户的密码则是记录在etc/shadow文件中
2.用户组
用户组中有若干用户,组名记录在/etc/group文件中
3.其他人
Linux文件权限概念
1.Linux文件属性
使用ls -al
命令查看当前目录下的所有文件(包括以.
开头的隐藏文件)和目录及其相关属性与权限
1 | root@ubuntu:~# ls -al |
以.config文件为例说明:
1 | drwx------ 6 root root 4096 Apr 8 2018 .config |
信息分为7栏,每栏的意义如下:
1 | [1]:文件类型权限 |
第一栏:文件类型权限
共有十个字符
第一个字符代表这个文件是目录,文件或链接文件等
[d]
代表目录,[-]
代表文件,[l]
表示链接文件
接下来的字符,以三个为一组,且均为[rwx]
的三个参数的组合,其中[r]
代表可读(read),[w]
代表可写(write),[x]
代表可执行(execute),如果没有权限则会出现减号[-]
。第一组代表文件拥有者可具备的权限,第二组代表加入此用户组之账号的权限,第三组代表非本人且没有加入本用户组的其他账号的权限
十个字符整理如下:
1 | -rwxr-xr-- |
意义是这是一个文件,文件拥有者具有可读,可写和可执行的权限。同用户组的用户具有可读和可执行的权限,其他用户具有只读的权限
第二栏:链接数
每个文件都会讲它的权限与属性记录到文件系统的inode中,这个属性记录的就是有多少不同的文件名链接到同一个inode中
第三栏:文件的拥有者
第四栏:文件所属的用户组
在Linux系统中,你的账号会加入一个或多个用户组中,假如用户组具有可读可写权限,则该用户组中的每个用户都具有可读可写权限
第五栏:文件大小
默认单位为Bytes
第六栏:文件创建日期或最后被修改的日期
第七栏:文件名
2.修改文件属性与权限
chgrp
:修改文件所属用户组
chown
:修改文件拥有者
chmod
:修改文件权限
修改所属用户组
使用chgrp
命令,前提是修改的用户组必须在/etc/group文件中存在才行,命令格式如下:
1 | root@ubuntu:~# chgrp groupname dirname/filename |
修改文件拥有者
使用chown
命令,前提修改的用户必须在/etc/passwd文件中存在才行,命令格式如下:
1 | root@ubuntu:~# chown 账号名称 文件或目录 |
修改文件权限
使用chmod
命令,设置方法有两种,分别可以用数字或是符号来进行权限的修改
数字类型修改文件权限
各权限的数字对照表如下:
1 | r:4 |
每种身份(owner,group,others)各自的三个权限(r,m,x)数字是需要累加的,例如当权限为:[-rwxrwx---]
数字则是:
1 | owner = rwx = 4+2+1 = 7 |
所以我们设置权限时,该文件的权限数字就是770,chmod语法如下:
1 | root@ubuntu:~# chmod xyz 文件或目录 |
符号类型修改文件权限
格式如下:
1 | root@ubuntu:~# chmod 身份 权限操作 权限 文件或目录 |
参数具体为:
(1)身份:u
即user,g
即用户组,o
即其他人,a
代表全部身份
(2)权限操作:+
即加入,-
即移除,=
即设置
(3)权限:rmx
例子如下:
1 | root@ubuntu:~# chmod u=rwx,go=rx .config |
3.目录与文件的权限意义
权限对文件的意义
r(read):可读取此文件的实际内容
w(write):可以编辑,新增或是修改该文件的内容(但不含删除该文件)
x(execute):该文件具有可以被系统执行的权限
权限对目录的意义
r(read):表示具有读取目录结构列表的权限,如使用ls命令将该目录的内容列表显示出来
w(write):具有改动该目录结构列表的权限
x(execute):用户具有进入该目录的权限,如使用cd命令进入某个目录列表