Linux一般将文件可读写的身份分为3个类别,分别是拥有者(owner),所属群组(group),其他人(others),且三种身份各有读(read),写(write),执行(execute)等权限。

用户与用户组

1.文件拥有者

即用户,通常分为root和一般身份的用户,所有用户的相关信息都记录在/etc/passwd这个文件内,用户的密码则是记录在etc/shadow文件中

2.用户组

用户组中有若干用户,组名记录在/etc/group文件中

3.其他人

Linux文件权限概念

1.Linux文件属性

使用ls -al命令查看当前目录下的所有文件(包括以.开头的隐藏文件)和目录及其相关属性与权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@ubuntu:~# ls -al
total 64
drwx------ 11 root root 4096 Mar 5 19:43 .
drwxr-xr-x 24 root root 4096 Apr 8 2018 ..
-rw------- 1 root root 391 Mar 5 22:59 .bash_history
-rw-r--r-- 1 root root 3106 Apr 19 2012 .bashrc
drwx------ 3 root root 4096 Apr 8 2018 .cache
drwx------ 6 root root 4096 Apr 8 2018 .config
drwx------ 3 root root 4096 Dec 30 00:28 .dbus
drwx------ 2 root root 4096 Apr 23 2018 .gconf
drwx------ 2 root root 4096 Apr 8 2018 .gvfs
drwxr-xr-x 3 root root 4096 Apr 8 2018 .local
drwxr-xr-x 2 root root 4096 May 15 2018 .oracle_jre_usage
-rw-r--r-- 1 root root 140 Apr 19 2012 .profile
drwx------ 2 root root 4096 Dec 29 22:32 .pulse
-rw------- 1 root root 256 Apr 8 2018 .pulse-cookie
drwxr-xr-x 3 root root 4096 May 15 2018 .swt
-rw------- 1 root root 858 Mar 5 19:43 .viminfo

.config文件为例说明:

1
2
drwx------    6    root  root  4096  Apr  8  2018 .config
[ 1 ] [2] [3] [4] [5] [ 6 ] [ 7 ]

信息分为7栏,每栏的意义如下:

1
2
3
4
5
6
7
[1]:文件类型权限
[2]:链接数
[3]:文件拥有者
[4]:文件所属用户组
[5]:文件大小
[6]:文件最后被修改的时间
[7]:文件名

第一栏:文件类型权限

共有十个字符

第一个字符代表这个文件是目录,文件或链接文件

[d]代表目录,[-]代表文件,[l]表示链接文件

接下来的字符,以三个一组,且均为[rwx]的三个参数的组合,其中[r]代表可读(read),[w]代表可写(write),[x]代表可执行(execute),如果没有权限则会出现减号[-]。第一组代表文件拥有者可具备的权限,第二组代表加入此用户组之账号的权限,第三组代表非本人且没有加入本用户组的其他账号的权限

十个字符整理如下:

1
-rwxr-xr--

意义是这是一个文件,文件拥有者具有可读,可写和可执行的权限。同用户组的用户具有可读和可执行的权限,其他用户具有只读的权限

第二栏:链接数

每个文件都会讲它的权限与属性记录到文件系统的inode中,这个属性记录的就是有多少不同的文件名链接到同一个inode中

第三栏:文件的拥有者

第四栏:文件所属的用户组

在Linux系统中,你的账号会加入一个或多个用户组中,假如用户组具有可读可写权限,则该用户组中的每个用户都具有可读可写权限

第五栏:文件大小

默认单位为Bytes

第六栏:文件创建日期或最后被修改的日期

第七栏:文件名

2.修改文件属性与权限

chgrp:修改文件所属用户组

chown:修改文件拥有者

chmod:修改文件权限

修改所属用户组

使用chgrp命令,前提是修改的用户组必须在/etc/group文件中存在才行,命令格式如下:

1
2
root@ubuntu:~# chgrp groupname dirname/filename
root@ubuntu:~# chgrp test .config

修改文件拥有者

使用chown命令,前提修改的用户必须在/etc/passwd文件中存在才行,命令格式如下:

1
2
3
4
root@ubuntu:~# chown 账号名称 文件或目录
root@ubuntu:~# chown 账号名称:用户组名称 文件或目录
root@ubuntu:~# chown test01 .config
root@ubuntu:~# chown test01:test .config

修改文件权限

使用chmod命令,设置方法有两种,分别可以用数字或是符号来进行权限的修改

数字类型修改文件权限

各权限的数字对照表如下:

1
2
3
r:4
w:2
x:1

每种身份(owner,group,others)各自的三个权限(r,m,x)数字是需要累加的,例如当权限为:[-rwxrwx---]数字则是:

1
2
3
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0

所以我们设置权限时,该文件的权限数字就是770,chmod语法如下:

1
2
root@ubuntu:~# chmod xyz 文件或目录
root@ubuntu:~# chmod 777 .config
符号类型修改文件权限

格式如下:

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命令进入某个目录列表