【概述】
在 Linux 系统中,不同的用户处于不同的地位,拥有不同的权限,为保护系统安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
Linux 系统的每一个文件或目录都有访问权限,这些访问权限决定了哪些用户和组群能访问文件和能执行的操作。
【查看文件权限】
使用ls -l 命令可以显示文件的属性以及文件所属的用户和组。
558idc@558idc:~/桌面/www.558idc.com$ ls -l
总用量 2200
drwxrwxr-x 2 558idc 558idc 4096 2月 18 10:59 558idc.com
-rw------- 1 558idc 558idc 1292472 2月 24 18:02 558idc.com.jpg
-rw-r--r-- 1 558idc 558idc 834 2月 21 10:42 558idc.gif
-rw-r--r-- 1 558idc 558idc 937514 2月 21 07:58 558idc.net.jpg
drwxrwxr-x 2 558idc 558idc 4096 2月 26 12:12 linux.558idc.com
drwxrwxr-x 3 558idc 558idc 4096 2月 27 10:45 自由互联
-rw------- 1 558idc 558idc 3287 2月 20 20:29 www.558idc.com.gif
如图,以第一行为例:drwxrwxr-x 2 558idc 558idc 4096 2月 18 10:59 558idc.com
其基本构成是:文件属性 链接数 所有者 所属用户组 最后修改时间 文件名
1.文件类型
每个文件的属性由左边第一部分的10个字符来确定。
第一个字符代表文件类型,具体字符有:
管道(piep)
2.文件权限
文件类型其后的九个字符三个一组,均为 r w x 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute),这三个权限的位置不会改变,若没有权限,仅会出现 - 符号。
以下图为例,从左至右用0-9表示10个字符,第0位确定文件类型,第1-3位确定属主权限拥有该文件的权限(该文件的所有者的权限),第4-6位确定属组权限拥有该文件的权限(所有者的同组用户),第7-9位确定其他用户拥有该文件的权限。
注:
- 读权限,表示可以用一些命令来读取某个文件的内容;写权限,表示可以编辑和修改某个文件;执行权限,通常指可以运行的二进制程序文件或者脚本文件。
- 一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
3.链接数
文件属性后面的数字代表链接到该文件所在的 inode 结点的文件名数目。
4.文件大小
文件大小是以 inode 结点大小为单位来表示的文件大小,可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
5.文件所有者与所属用户组
每个文件都有一特定的所有者,也就是对该文件具有所有权的用户,同时,在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组,而文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux 系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
所有者与所属用户组,标明了该文件具所有权的用户及该文件所属的用户组。
【文件属性的更改】
1.更改文件属主
语法:chown [选项] 属主名 文件名
常用选项
-R:递归更改文件属组,即更改某目录文件的属组时,若加上-R,那么该目录下的所有文件的属组都会更改。
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 558idc 558idc 4096 3月 11 14:23 linuxmi
558idc@558idc:~/558idc.com$ sudo chown root linuxmi
[sudo] 558idc 的密码:
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 root 558idc 4096 3月 11 14:23 linuxmi
如图,名为linuxmi的普通文件的所属主从开始的 558idc 改变为 root
注:
chown命令更改文件属主的同时,也可以更改文件属组,语法为:chown [选项] 属主名:属组名 文件名
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 root root 4096 3月 11 14:23 linuxmi
558idc@558idc:~/558idc.com$ sudo chown 558idc:docker linuxmi
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 558idc docker 4096 3月 11 14:23 linuxmi
如图,名为linuxmi的普通文件的所属主从开始的 root 改变为 558idc,所属组从开始的 root 变为 docker
2.更改文件属组
语法:chgrp [选项] 用户组名 文件名
选项同 chown 命令的选项相同
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 558idc docker 4096 3月 11 14:23 linuxmi
558idc@558idc:~/558idc.com$ sudo chgrp mysql linuxmi
558idc@558idc:~/558idc.com$ ls
linuxmi
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 558idc mysql 4096 3月 11 14:23 linuxmi
如图,名为linuxmi的普通文件的所属组从开始的 docker 改变为 mysql
3.更改文件权限
Linux 文件的基本权限就有九个,分别是 owner / group / others 三种身份各有自己的 read / write / execute 权限。
要想更改权限,有两种方法,一种是用二进制数字表示,一种是用字符表示。
1)用数字更改
用数字来代表各个权限,则:
读,权限是二进制的100,十进制是4;
写,权限是二进制的010,十进制是2;
执行,权限是二进制的001,十进制是1;
即:各权限的对应数字为:r:4,w:2,x:1
每种身份( owner / group / others )各自的三个权限( r / w / x )数字是需要累加的。
例:
当权限为: [ -rwxrwx--- ] 时
分数为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0
所以当设定权限的变更时,该文件的权限数字就是770。
变更权限的命令的语法为:chmod [选项] xyz 文件名或目录名
注:xyz : 就是数字类型的权限属性,为 rwx 属性数值的相加
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxr-xr-x 2 558idc 558idc 4096 3月 11 15:39 linuxmi
558idc@558idc:~/558idc.com$ sudo chmod 777 linuxmi
[sudo] 558idc 的密码:
558idc@558idc:~/558idc.com$ ls -l
总用量 4
drwxrwxrwx 2 558idc 558idc 4096 3月 11 15:39 linuxmi
如图,将权限改为777后,所有身份均具有读、写、执行权限。
2)用字符更改
九个权限分别是 user、group、others 三种身份的权限,那么可用 u、g、o 来代表三种身份的权限,此外,用 a 代表 all 表示所有的身份。
则变更权限的命令的语法为:chmod 身份 符号 权限 文件名或目录名
如图,更改权限
558idc@558idc:~/558idc.com$ ls -l
总用量 8
drwxrwxrwx 2 558idc 558idc 4096 3月 11 15:39 linuxmi
-----w--w- 1 558idc 558idc 3287 2月 20 20:29 www.558idc.com.gif
558idc@558idc:~/558idc.com$ sudo chmod u=rwx,g=rx,o+x www.558idc.com.gif558idc@558idc:~/558idc.com$ ls -l
总用量 8
drwxrwxrwx 2 558idc 558idc 4096 3月 11 15:39 linuxmi
-rwxr-x-wx 1 558idc lpadmin 3287 2月 20 20:29 www.558idc.com.gif
更多Linux命令相关信息见Linux命令大全 专题页面 https://www.558idc.com/topicnews.aspx?tid=16