目录
一、权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令:su [用户名]
功能:切换用户
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码
说明:有人可能会觉得,既然我们已经知道了root账号的密码,为什么还要使用普通用户呢?由于root账号的权限很高,一些误操作可能造成很大的影响,为了减少失误造成的影响,我们一般使用普通用户,但是普通用户的权限有时候受阻不能进行一些操作,这时候就需要我们暂时性的切换到root账号进行操作了。如果我们只想使用root账号执行一条指令,可以使用sudo进行提权
二、权限管理
权限是依赖于文件的!
一件事情能否允许被你做,取决于——人(角色)、事物属性
2.1 文件访问者的分类(人)
文件和文件目录的所有者:u -- User
文件和文件目录的所有者所属组的用户:g -- Group说明:一个组内可以只有一个人,并以组长的名字对组命名。我们的工作通常以小组的方式进行,所属组可以隔离不同小组的用户。
其它用户:o -- Others2.2 文件类型和访问权限(事物属性)
说明:
为什么只列出了文件的 所有者和所属组呢,因为其它用户是无法穷举的^O^
Windows依靠后缀.区分文件类型,但是Linux中文件类型与后缀无关。为什么我们创建文件名还要带上后缀呢,Linux上可能有些软件是依靠后缀区分文件类型的,而且带上后缀可以帮助程序员分辨文件类型呀^O^
2.2.1 文件类型
Linux文件类型的分类——使用文件属性第一位的一个字符来区分文件类型
- 普通文件、源代码、可执行程序、库 d 目录文件(directory c 字符设备文件(char)键盘、显示器 b 块设备文件(block l 链接文件(link p 管道文件(pipeline
字符设备文件 "c"
实际上,我们每打开一个终端,就相当于创建一个字符设备文件
块设备文件 "b"
我们的云服务器上磁盘这样的设备,就属于块设备文件
链接文件 "l"
Linux上的链接文件,类似于Windows上的快捷方式
管道文件 "p"
不要把管道文件与 "|" 符号混为一谈
extra file 指令
file指令 用于辨识文件类型
file test.txt file dir file /dev/tty file /dev/vda file /usr/lib64/libz.so.1
演示效果:
2.2.2 访问权限
使用ll指令(小写的LL,即ls -l)查看文件的属性
基本权限
1. 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
2. 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
3. 执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
4. “-”表示不具有该项权限extra chmod 指令
chmod指令 用于修改文件的权限
chmod u+r test.txt # 给test.txt文件的拥有者加上可读权限 chmod u-w test.txt # 给test.txt文件的拥有者减去可写权限 chmod u+x,g-r test.txt # 给test.txt文件的拥有者加上可执行权限、所属组减去可读权限 chmod o+rwx test.txt # 给test.txt文件的其它用户加上所有权限 chmod a-r test.txt # 给test.txt文件的所有访问者减去可读权限 我们可以使用 cat test.txt 指令来检测当前访问者是否拥有该文件的读权限 我们可以使用 echo "hello" >> test.txt 指令来检测当前访问者是否拥有该文件的写权限
演示效果:
注意:root可以修改任何文件的权限;一般用户且非该文件的所有者、所属组,不能修改该文件的权限;没有对应的权限无法进行相应的操作,输入的指令会被操作系统拦截
2.3 文件权限值的表示方法
如此一来,我们就可以用字符 '0' 或 '1' 来表示该位置上是否有对应的权限,例如:'---' : '000' 对应的八进制数据 0 '--x' : '001' 对应的八进制数据 1 '-w-' : '010' 对应的八进制数据 2 '-wx' : '011' 对应的八进制数据 3 'r--' : '100' 对应的八进制数据 4 'r-x' : '101' 对应的八进制数据 5 'rw-' : '110' 对应的八进制数据 6 'rwx' : '111' 对应的八进制数据 7
演示效果:
2.4 修改文件的所有者和所属组
2.4.1 修改文件的所有者
在日常生活中,我们把东西交给别人,是否需要得到别人的同意呢?同样的道理,我们把文件的所有者修改为别人的时候,理所应当也应该得到他的同意,但是怎样得到他的同意呢?处理起来貌似相当的麻烦,比起考虑怎样得到别人的同意,不如直接硬塞给他,由别人自己来处理文件。
如果出现图中无法使用sudo指令的情况,可以进入root账号,打开配置文件/etc/sudoers, 找到 root ALL = (ALL) ALL,在下面添加一行 username ALL = (ALL) ALL
2.4.2 修改文件的所属组
2.5 默认权限与权限掩码
我们新建几个文件/目录,发现这些文件/目录它们创建后的权限都是一样的,实际上我们创建的文件/目录的 默认权限 = 起始权限 去掉 对应位置上权限掩码和起始权限都有的权限,使用 umask 指令查看当前的权限掩码(Linux下默认的权限掩码为0002,其中后三位八进制数字002就是我们权限掩码表示的权限),我们可以使用 umask + [四位数字] 修改当前的权限掩码,验证一下上述说法。如果把权限掩码修改为 0000,再次新建一个文件/目录,查看文件属性就能看到一个新建文件/目录的起始权限了(文件的起始权限为666,目录的起始权限为777)。
我们再结合图文分析一下上图中文件/目录的默认权限是怎样得到的 文件的起始权限为666 (110-110-110) [rw-rw-rw-] 权限掩码0002->002 (000-000-010) [-------w-] 文件的默认权限为664 (110-110-100) [rw-rw-r--] 目录的起始权限为777 (111-111-111) [rwxrwxrwx] 权限掩码0002->002 (000-000-010) [-------w-] 目录的默认权限为775 (111-111-101) [rwxrwxr-x]
注意:不要误认为 默认权限 = 起始权限 - 权限掩码
实际上是权限掩码各位取反,然后按位与(&)上起始权限,
最终权限 = 起始权限 & (umask) 起始权限为666 (110-110-110) [rw-rw-rw-] 权限掩码为003 (000-000-011) [-------wx] 各位取反后775 (111-111-100) [rwxrwxr--] 默认权限为664 (110-110-100) [rw-rw-r--] 起始权限为777 (111-111-111) [rwxrwxrwx] 权限掩码为002 (000-000-010) [-------w-] 各位取反后775 (111-111-101) [rwxrwxr-x] 默认权限为775 (111-111-101) [rwxrwxr-x] 因为目录的起始权限为777(全1),所有目录文件的默认权限刚好就是"起始权限 - 权限掩码"
权限掩码的存在是为了满足用户多样化的需求,不同用户可能对一个新建的文件的权限有不同的需求,用户根据需要设置权限掩码可以简化操作(无需再重复通过指令来修改文件的权限)
2.6 目录的权限
2.6.1 目录的权限的作用
可执行权限:
如果访问者没有该目录可执行权限,则无法cd到该目录中
可读权限:如果访问者没有该目录可读权限,则无法用ls等命令查看该目录中的文件内容以及文件属性(也就是说,一个文件的属性是否能被访问者查看,是由这个文件所在的目录的权限决定的)
可写权限:如果访问者没有该目录可写权限,则无法在该目录中创建/删除文件(也就是说,一个文件是否能被访问者删除,是由这个文件所在的目录的权限决定的,与该文件本身无关)
于是,问题来了。如果访问者拥有目录的写权限,他就可以删除目录中的文件(无论他是否拥有这个文件的写权限)。这样好像有些违背常理,张三创建的一个文件,凭什么可以被你李四直接删掉? 但是我们要考虑到为什么一个目录的起始权限是"777",如果我们不能进入这个目录,不能查看这个目录中的文件的属性,不能在这个目录中创建文件、删除文件,那我们还创建这个目录干什么呢?Linux系统下的默认权限掩码是"0002"就是为了去掉others的写权限防止上述问题的发生。除此之外,一般情况下,不同的账号是在各自的home目录下独立工作的,而且新建用户的home目录对other是没有写权限的,不会发生上述问题。
但是,有时候可能需要多个账号在同一目录下(当然这个目录不能是在任何一个用户的home目录下,root就提供了相应的目录)协同工作,共享一些数据,仍然无法避免上述问题。为了解决这个不科学的问题,Linux又引入了粘滞位的概念
2.6.2 粘滞位
"chmod +t"(注意空格的分布)可以为一个目录添加粘滞位(修改的是other的权限),