本文主要介绍Linux文件权限,包括文件权限所有者角色、群组、文件权限概念以及目录配置。
1、文件权限所有者
Linux文件权限所有者的角色有三种:文件所有者(Ower)、文件所属群组(Group)、其他人(Other)。Linux之所以会有这么多种角色,和它多任务、多人协作的使命息息相关的,不同的用户角色,会有对应不同的文件权限。
文件所有者和其他人如字面意思一样,重点解释下文件所属群组。文件所属群组其实是指文件所有者所在的群组(即用户组),用户组最重要的作用是进行团队协作开发,同一个团队内的不同开发成员之间可以共享文件资源,不同的团队之间设置不同的文件权限,这样既能保证信息安全,又能在有限的范围内高效便捷的共享信息资源。需要强调的是,这其中可能存在一个人同时在几个群组的情况。
2、Linux文件属性
以Centos7中的根目录说明文件属性,使用命令ls查看根目录下的文件属性
[hack@localhost /]$ ls -al # -a表示显示隐藏文件,-l表示长格式显示,包括文件的属性、修改时间等信息
总用量 40
dr-xr-xr-x. 17 root root 4096 10月 25 09:54 .
dr-xr-xr-x. 17 root root 4096 10月 25 09:54 ..
lrwxrwxrwx. 1 root root 7 10月 25 09:47 bin -> usr/bin
dr-xr-xr-x. 4 root root 4096 10月 25 22:17 boot
drwxr-xr-x. 20 root root 3280 10月 27 20:16 dev
drwxr-xr-x. 139 root root 8192 10月 27 20:35 etc
drwxr-xr-x. 3 root root 17 10月 25 09:54 home
lrwxrwxrwx. 1 root root 7 10月 25 09:47 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 10月 25 09:47 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 8月 12 2015 media
drwxr-xr-x. 2 root root 6 8月 12 2015 mnt
drwxr-xr-x. 3 root root 15 10月 25 09:52 opt
dr-xr-xr-x. 454 root root 0 10月 27 20:14 proc
dr-xr-x---. 4 root root 4096 10月 27 20:35 root
drwxr-xr-x. 38 root root 1120 10月 27 20:35 run
lrwxrwxrwx. 1 root root 8 10月 25 09:47 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 8月 12 2015 srv
dr-xr-xr-x. 13 root root 0 10月 27 20:14 sys
drwxrwxrwt. 24 root root 4096 10月 27 21:21 tmp
drwxr-xr-x. 13 root root 4096 10月 25 09:47 usr
drwxr-xr-x. 21 root root 4096 10月 27 20:14 var
取其中某一行记录分析
将文件权限类型拆解如下图
文件权限类型共有13个符号表示,第一个表示文件类型,Linux中的文件类型主要有如下
1)d:表示目录
2)-:表示文件
3)l:表示链接
4)b:表示可供存储的接口设备,比如移动硬盘等
5)c:串行端口文件,比如键盘、鼠标
其中文件类型b和c需要解释一下,这与通常Windows中的习惯不符,在Windows中,硬件设备是可以在设备管理器中直接查看。而在Linux中,一切皆文件,无论软硬。
文件所有者、文件群组、其他人权限可以统一说明
1)r:表示读权限
2)w:表示写权限
3)x:表示可执行权限
4)-:表示没有权限
这里需要强调下目录的权限,如果具有读(r)的权限,说明你可以通过ls命令列举出该目录下的文件名数据;如果有可执行权限(x),说明你可以进入该目录使得该目录成为工作目录;最后,写(w)的权限就比较神通广大,通过此权限,我们可以新建文件或者目录、删除已有文件或者目录、对文件或者目录重命名、转移文件或者目录等。
3、修改文件权限和属性
1、修改文件的权限
Linux的基本权限有9个,分别为ower、group和other的read、write和execute权限。修改这9种权限主要有两种方式,按照数字和符号类型修改,这里主要介绍按照数字修改权限。
read、write和execute对应的权值为4、2和1,可通过chmod命令修改,具体格式如下
chmod [-R] 权值 文件或者目录 # -R表示递归修改目录下的所有子文件
举例说明,在/home/hack/study文件夹下的c_program文件夹的权限为rwxrwxr-x,
[hack@localhost study]$ ls -al /home/hack/study
总用量 8
drwxrwxr-x. 3 hack hack 40 10月 28 20:38 .
drwx------. 15 hack hack 4096 10月 28 20:38 ..
drwxrwxr-x. 2 hack hack 6 10月 27 21:21 c_program
将c_program文件夹的other文件权限修改为rwxrwx—,即去掉other的r、w、x权限,other的文件权值为 0+0+0=0,则对应此文件目录的权值为770,即有
[hack@localhost study]$ chmod 770 c_program/
[hack@localhost study]$ ls -al .
总用量 8
drwxrwxr-x. 3 hack hack 40 10月 28 20:38 .
drwx------. 15 hack hack 4096 10月 28 20:38 ..
drwxrwx---. 2 hack hack 6 10月 27 21:21 c_program
2、修改文件的所有者
修改文件所有者通过chown(change ower)命令,具体格式如下
chown [-R] 用户名称 文件或目录 # -R表示递归修改目录下的所有子文件
举例说明,先登录root用户,在/home/hack/study目录下新建文件hello.c,查看其文件所有者发现为root,现将其修改为hack,则有如下
[root@localhost study]# ls -al .
总用量 8
drwxrwxr-x. 3 hack hack 36 10月 28 21:00 .
drwx------. 15 hack hack 4096 10月 28 20:59 ..
-rw-r--r--. 1 root root 6 10月 28 21:00 hello.c
root@localhost study]# chown hack hello.c
[root@localhost study]# ls -al .
总用量 8
drwxrwxr-x. 3 hack hack 36 10月 28 21:00 .
drwx------. 15 hack hack 4096 10月 28 20:59 ..
-rw-r--r--. 1 hack root 6 10月 28 21:00 hello.c
3、修改文件所在群组
修改文件所在群组通过chgrp(change group)命令,具体格式如下
chgrp [-R] 用户组名称 文件或者目录 # -R表示递归修改目录下的所有子文件
举例说明,将上述hello.c所属用户组修改为hack,则有如下
[root@localhost study]# chgrp hack hello.c
[root@localhost study]# ls -al .
总用量 8
drwxrwxr-x. 3 hack hack 36 10月 28 21:00 .
drwx------. 15 hack hack 4096 10月 28 20:59 ..
drwxrwx---. 2 hack hack 6 10月 27 21:21 c_program
-rw-r--r--. 1 hack hack 6 10月 28 21:00 hello.c