0. Linux下的用户
在学习Linux权限之前,我们要先来了解Linux下的用户:
在Linux入门1——初识Linux指令里,我们最先了解的指令就是 whoami ,当时说这个指令是为了查看当前的账号是谁:
其实,Linux下有两种用户:超级用户(root)、普通用户。
1. root:超级管理员,可以在Linux系统下做任何事情,不受限制;
2. 非root:普通用户,在Linux下做有限的事情。(除root外的任何用户都是普通用户)
那么,两种用户之间该如何切换呢?
从root用户切换为普通用户使用 su 用户名 ;从普通用户切换为root用户只需 su /su - ,注意普通用户切换为root用户需要输入root用户的密码。(两种口令显示的结果不完全相同,主要区别在于:su -是以root的身份重新登录了一次,此时的路径相应的会发生变化;su只是将用户身份进行了切换,此时的路径并没有发生变化。)
1.文件访问者的分类
文件的访问者分为三类:
①拥有者:文件和文件目录的所有者(这个文件曾经是谁创建的,属于谁);
②所属组:文件和文件目录的所有者所在的组的用户(可以理解为所属组就是一个以拥有者为群主的群,这个群的所有人都属于所属组);
③other:除拥有者和所属组之外的用户。
那么这种分类具体在Linux中是如何体现的呢?举个例子:
2.文件类型和访问权限
知道了拥有者、所属组、other在Linux是如何体现的,那么上图的其他数据又分别代表什么呢?
一图搞懂:
文件类型补充:
d:文件夹;
-:普通文件;
l:软链接(类似Windows的快捷方式);
b:块设备文件(例如硬盘、光驱等);
p:管道文件;
c:字符设备文件(例如屏幕等串口设备);
s:套接口文件。
那么第2-10位三三成对的字母又代表什么意思呢?
以权限前三位的所有者权限为例:
①r:即read的简写,此位只会出现 r 或 - 。对于文件而言,出现 r 表示所有者具有读取文件的权限,对于目录而言,表示所有者具有浏览该目录的权限;出现 - 表示所有者不具有read的权限;
②w:即write的简写,此位只会出现 w 或 - 。对于文件而言,出现 w 表示所有者具有修改文件内容的权限,对于目录而言,表示所有者具有删除移动目录内文件的权限;出现 - 表示所有者不具有write的权限;
③x:即execute的简写,此位只会出现 x 或 - 。对于文件而言,出现 x 表示所有者具有执行文件的权限,对于目录而言,表示所有者具有进入目录的权限;出现 - 表示所有者不具有execute的权限。
(所属组与other也是同样的道理)
3. 文件权限值的表示方法
知道了 r w x - 所代表的含义,接下来我们再来熟悉一下文件权限值的字符表示方法并了解一下八进制数值表示方法。
①:字符表示方法
表示方法 | 说明 | 表示方法 | 说明 | 表示方法 | 说明 | 表示方法 | 说明 |
r-- | 仅可读 | -w- | 仅可写 | --x | 仅可执行 | rw- | 可读可写 |
-wx | 可写可执行 | r-w | 可读可执行 | rwx | 可读可写可执行 | --- | 无权限 |
②八进制数值表示方法
权限符号 | 二进制 | 八进制 |
r-- | 100 | 4 |
-w- | 010 | 2 |
--x | 001 | 1 |
rw- | 110 | 6 |
r-x | 101 | 5 |
-wx | 011 | 3 |
rwx | 111 | 7 |
--- | 000 | 0 |
4.文件访问权限的相关设置方法
4.1 修改文件的访问权限
① chmod u/g/o/a +/- r/w/x 文件名 ——字符修改
解释:
u->user->所有者;g->group->所属组;o->other->其他用户;a->all->所有用户(u+g+o);
+——增加权限;- ——减去权限;
r——read——读权限;w——write——写权限;x——execute——执行权限。
示例:
在3中,我们发现了文件权限的表示方法不仅有字符表示方法,还有一个八进制数值表示方法呀!那么另一种修改文件访问权限的方法就是八进制数值:
② chmod 八进制数值 文件名 ——八进制数值修改
4.2修改文件的拥有者和所属组
4.1我们已经知道了如何修改文件的访问权限,但是上面仅仅是修改了文件的文件属性,那么如何把一个用户实现拥有者<-->所属组<-->other之间的转换呢?答案如下:
① chown 用户名 文件名 ——修改文件的拥有者
(chown——change owner;顾名思义,修改文件的拥有者就相当于把这个文件给了另一个人,给别人东西当然要经过别人的允许,所以普通用户给普通用户会无法修改,只能用sudo提权或者使用root用户修改文件的拥有者)
示例:
② chgrp 用户名 文件名 ——修改文件的所属组
(chgrp——change group,其他与chown相同)
示例:
③ chown 用户名:用户名 文件名 ——文件的所有者和所属组一起修改