什么是文件的权限?
- 我个人的理解:权限是什么?就是限定你能做的事,其载体是文件本身,但是其限制的对象却是使用文件的对象,比如某个用户。
- 书面的解释:保证文件可以被可用的用户做相关的操作,
- 权限的作用:当然是安全!保障了系统底层的稳定性。
这也是为什么大多数服务器采用Linux或者Unix系统,相比于windows更安全可靠,当然其权限的设定也是安全性保障的一部分。
怎么使用文件权限?
- 知道了what,更要知道how。怎么使用文件权限也非常重要,使用的第一步当然是查看。
查看文件权限
#查看权限指令:
ls -l 文件名 ===============>表示查看文件属性
ls -ld 目录名 ===============>表示查看目录属性
ll 文件名 ===============>表示查看文件属性 同方法一
ll -d 目录名 ===============>表示查看目录属性 同方法二
对目录来说可以用参数 -R 表示递归显示
示例:
[kiosk@foundation2 Desktop]$ ls -l file
-rw-rw-r--. 1 kiosk kiosk 0 Mar 31 22:04 file
[kiosk@foundation2 Desktop]$ ls -ld /home/
drwxr-xr-x. 3 root root 19 Mar 24 21:27 /home/
[kiosk@foundation2 Desktop]$ ll file
-rw-rw-r--. 1 kiosk kiosk 0 Mar 31 22:04 file
[kiosk@foundation2 Desktop]$ ll -d /home/
drwxr-xr-x. 3 root root 19 Mar 24 21:27 /home/
文件权限的解释
- 那么我们查看出来的这些属性又分别是什么意思呢?
[kiosk@foundation2 Desktop]$ ll -d /home/
drwxr-xr-x. 3 root root 19 Mar 24 21:27 /home/
我们对上面的这段属性进行切割介绍:
drwxr-xr-x. 3 root root 19 Mar 24 21:27 /home
d | rwxr-xr-x | 3 | root | root | 19 | Mar 24 21:27 | /home
1 2 3 4 5 6 7 8
上图中的1-8分别代表不同的属性:
-
文件的类型 - 表示空文件/文本文件 d 表示目录 l 表示软连接/或者说快捷方式 s socket套接字—————>一种通信机制,可以通过其进入程序内部进行交流 b block块设备—————>例如硬盘、软盘 c 字符设备
-
文件的权限 rwx|r-x|r-x 分成三部分: 分别是对用户[u]的权限,组[g]的权限,其他用户[o]的权限 r 代表可读,w代表可写,x代表可执行
-
这个数字3表示文件硬链接次数:也就是文件内容被系统记录的次数 如果是目录,表示其子目录数,可以用 ls -a查看其子目录数,示例如下:
[kiosk@foundation2 Desktop]$ ls -a /home/
. .. kiosk
这里可以看到有三个子目录。
-
文件属于的用户
-
文件属于的用户组
-
文件大小或目录大小
-
文件被修改时间
-
文件名或目录名
修改文件的所属用户或所有组
1. 修改文件所属用户
chown 用户名 文件名 -------->将某文件的所有人修改
示例:
[root@foundation2 ~]# ll -d /haha/
drwxr-xr-x. 2 root root 6 Mar 31 22:54 /haha/
[root@foundation2 ~]# chown tom /haha/
[root@foundation2 ~]# ll -d /haha/
drwxr-xr-x. 2 tom root 6 Mar 31 22:54 /haha/
成功将/haha/ 目录的所有者从root修改为tom
2. 修改文件所属用户组
chgrp 组名 文件名 -------->将某文件的所有组修改
示例:
[root@foundation2 ~]# ll -d /haha/
drwxr-xr-x. 2 tom root 6 Mar 31 22:54 /haha/
[root@foundation2 ~]# chgrp tom /haha/
[root@foundation2 ~]# ll -d /haha/
drwxr-xr-x. 2 tom tom 6 Mar 31 22:54 /haha/
成功将/haha/ 目录的所有组从root修改为tom
修改文件的权限
chmod <u|g|o><+|-|=><r|w|x或数字> 文件
r代表数字为4,w代表数字为2,x代表数字为1,所以
权限字母表示 | 数字表示 |
---|---|
rwx | 7 |
rw- | 6 |
r-x | 5 |
r- - | 4 |
-wx | 3 |
-w- | 2 |
- -x | 1 |
那么就可以用数字表示其权限,例如rwxr-xr--可以根据上面的说明表示为754,
有没有更方便一些呢?
注意
上表中是理论上所有情况,但实际上,有些权限并不常见或存在。
一般最常见的是读权限,其次是执行权限,最后才是写权限。
因为写的风险是最高的,所以必须建立在rx的基础上,所以只能写其实也就算rwx。
这里思考起来比较麻烦,建议可以联想现实生活的例子:比如在公司,老板是相当于root,各个部门是用户组,我一个技术部的开发相当于普通用户,我的读权限相当于可以进技术部,但不能随笔进财务部,假如财务部没有对其他用户赋予读权力的话,执行权限相当于可以对部门的事物执行,写权力就算是修改部门内容。
说了那么多,做个实验更明了。
实验要求:
新建一个目录/public,所有用户都可以读写执行
[root@foundation2 Desktop]# mkdir public
[root@foundation2 Desktop]# ls -ld public/
drwxr-xr-x. 2 root root 6 Apr 1 20:41 public/
[root@foundation2 Desktop]# chmod g+w,o=rwx public/
[root@foundation2 Desktop]# ls -ld public/
drwxrwxrwx. 2 root root 6 Apr 1 20:41 public/
新建另一个目录/private,只能所属组员可以写入
[root@foundation2 Desktop]# mkdir private
[root@foundation2 Desktop]# ls -ldR private/
drwxr-xr-x. 2 root root 6 Apr 1 20:44 private/
[root@foundation2 Desktop]# chmod 770 private/
[root@foundation2 Desktop]# ls -ldR private/
drwxrwx---. 2 root root 6 Apr 1 20:44 private/
当然,这里的组是root,你也可以用chgrp修改所属组
注意,chmod后面可以用多种写法,按照上面说过的规范即可。
umask系统预留权限
这个其实就算系统新建文件时你文件显示的权限
对目录来说默认建立,上面也有例子,可以发现,新目录建立是drwxr-xr-x,也就是755
对文件来说,默认没有x属性,保证安全,所以文件默认建立是-rw-r--r--,也就是644
umask临时设定系统预留权限为077
可以通过vim /etc/profile 和vim /etc/bashrc 更改mask,
/etc/profile 是系统配置文件,就是在系统中产生的新文件的umask由他管
/etc/bashrc 是shell配置文件,shell中产生的文件umask由他管
55 # By default, we want umask to get set. This sets it for login shell
56 # Current threshold for system reserved uid/gids is 200
57 # You could check uidgid reservation validity in
58 # /usr/share/doc/setup-*/uidgid file
59 if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
60 umask 002
61 else
62 umask 022
最后别忘了修改完使其生效
当然要source一下,
source /etc/profile
source /etc/bashrc
可能需要重启或重新进入系统或重开shell
今天因为时间原因下写到这里,明天写有关特殊权限的使用和acl权限列表的使用,更适用于生产环境哦,并且有些实验题可以讲解一下操作步骤!明天见~