在linux中,为了数据的安全性,权限控制是十分重要的,在这里面可以细分成两个部分来理解他
权限定义
linux每一个用户都属于一个组,不能独立于组外。linux的文件权限需要定义三个实体对它的权限
- 文件所有者
- 文件所在组
- 其他组
所有者
一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者
可以使用chown【change owner】 用户名 文件名来修改文件的所有者,例如更改error.log的所有者为enoch
chown enoch error.log #更改error.log的所有者为enoch
chown enoch:home error.log #更改error.log的所有者和用户组为enoch与home
chown .home error.log #更改error.log的用户组为home
#在所有者和用户组中使用“.”也可以,但是由于很多用户喜欢使用小数点,可能造成系统误判,所以建议使用":"
所在组
当用户创建了一个文件后,这个文件的所在组就是该用户所在的用户组
可以使用chgrp【change group】来改变文件的所在组
chgrp home error.log #修改文件的所在组为home
其他组
除开所在组之外的其他组均为其他组
权限说明
当我们使用命令 ls -l 时候就会显示出改文件或者文件夹相对应的权限
drwx------ 2 www www 4096 May 5 19:35 www
drwxrwxrwx 2 root root 4096 May 5 16:51 wwwlogs
drwxr-xr-x 3 root root 4096 Jul 4 20:45 wwwroot
第一列规定了文件权限说明,共由十个字符分成四个部分,用www目录来说
[d] [rwx] [---] [---]
1 234 567 890
1:代表这个文件是目录还是文件名其中d代表目录,如果是文件则为-,更多的文件信息如下
1 2 3 4 5 6 |
|
234:文件所有者的权限,rwx及为可读可写可执行
r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。
w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限(不包含删除该文件);对目录来说,具有新建,删除,修改,移动目录内文件的权限(不论该文件的权限为何都可以进行删除操作)。
x(Execute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限(能否使用cd命令进入该目录)。
567:文件所有组的权限,---代表没有任何权限
890:除开所有者与所有组以外用户的权限,此处没有任何权限
修改权限
修改权限的命令是chmod,而改变权限的方式分为两种
1.数字改变权限法
Linux的文件基本权限只有九个,分别是onwer,group,other三种身份,所以我们可以用数字来代表权限,其中
r : 4
w : 2
x : 1
每种身份设置权限为数字的累加,比如将error.log文件设置成所有人都有RWX权限,则
chmod 777 error.log
因为[-rwxrwxrwx]实际上是[4+2+1][4+2+1][4+2+1]也就是777了。如果我们将权限变为[-rwxr-xr--]则[4+2+1][4+0+1][4+0+0]即为754
2.符号改变法
符号改变法实际上就是对不同实体设置权限,其中我们只要懂的三个部分的含义就可以
chmod | u | +(加入) | 文件或目录 |
g | =(设置) | ||
o | |||
a | -(除去) |
举几个例子来说明吧,设置用户对error.log有rwx权限,所在组和其他组有rx权限。
chmod u=rwx,go=rx error.log
设置用户对error.log有rwx权限,所在组有rx权限,其他组有r权限
chmod u=rwx,g=rx,o=r error.log
除去所有用户的可执行权限
chmod a-x error.log