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
18root@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
2drwx------ 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
2root@ubuntu:~# chgrp groupname dirname/filename
root@ubuntu:~# chgrp test .config
修改文件拥有者
使用chown命令,前提修改的用户必须在/etc/passwd文件中存在才行,命令格式如下:
1
2
3
4root@ubuntu:~# chown 账号名称 文件或目录
root@ubuntu:~# chown 账号名称:用户组名称 文件或目录
root@ubuntu:~# chown test01 .config
root@ubuntu:~# chown test01:test .config
修改文件权限
使用chmod命令,设置方法有两种,分别可以用数字或是符号来进行权限的修改
数字类型修改文件权限
各权限的数字对照表如下:
1
2
3r:4
w:2
x:1
每种身份(owner,group,others)各自的三个权限(r,m,x)数字是需要累加的,例如当权限为:[-rwxrwx---]数字则是:
1
2
3owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0
所以我们设置权限时,该文件的权限数字就是770,chmod语法如下:
1
2root@ubuntu:~# chmod xyz 文件或目录
root@ubuntu:~# chmod 777 .config
符号类型修改文件权限
格式如下:
1root@ubuntu:~# chmod 身份 权限操作 权限 文件或目录
参数具体为:
(1)身份:u即user,g即用户组,o即其他人,a代表全部身份
(2)权限操作:+即加入,-即移除,=即设置
(3)权限:rmx
例子如下:
1root@ubuntu:~# chmod u=rwx,go=rx .config
3.目录与文件的权限意义
权限对文件的意义
r(read):可读取此文件的实际内容
w(write):可以编辑,新增或是修改该文件的内容(但不含删除该文件)
x(execute):该文件具有可以被系统执行的权限
权限对目录的意义
r(read):表示具有读取目录结构列表的权限,如使用ls命令将该目录的内容列表显示出来
w(write):具有改动该目录结构列表的权限
x(execute):用户具有进入该目录的权限,如使用cd命令进入某个目录列表