前言
我们知道,在Linux中一切皆文件。
Winodow系统也是如此,先拿我们熟知的Window系统举例。
vs编译软件,在我们桌面上的图标,他只是一个快捷方式,双击它会直接去找到该应用程序的所在位置。
我们查看它的属性去查看它的所在位置:
我们会发现,其实它就是一个文件。
我们在日常用的windows系统中,在电脑上打开软件我们可以选择以管理员身份去运行该软件。
Windows 中有两种类型的帐户:标准用户帐户和管理员用户帐户。管理员帐户可以配置系统设置并访问通常受限制的操作系统部分。
管理员角色的目的是允许对操作系统的某些方面进行更改,否则这些方面可能会被普通用户帐户意外(或通过恶意操作)损坏。
那么接下来,我们来说下,如何管理文件的权限?
一、文件的权限
1、文件权限属性
权限=用户角色(具体的人)+文件权限属性
我们拿图说明:
我们创建一个文件file.txt之后,ll 查看111目录下的文件,可以看到file.txt文件权限属性
位于最前面的这一串字符便是file.txt的权限属性,那它是什么意思呢?
我们在学校,经常会交一些文件,例如你们小组要做一个汇报,汇报内容在一个文件夹里,你自己可以查看、修改是自己的权限,因为你是该文件的拥有者。你把汇报内容搞完之后发到自己的小组群,他们是否能查看、修改又是他们的权限,他们就是你的所属组。你汇报内容写的很不错,被发送到群里作为示范,群里的其他人能否查看、修改,又是他们的权限,他们就是其他人。
所以我们这串字符表示的权限是不同的三个角色的权限,-rw-rw-r--,十个字符,最开始的-表示的是该文件是一个普通文件,关于它的具体内容我们待会讲解。
剩下的九个字符,三三分开,分别对应拥有者、所属组、other。
这里的拥有者、所属组、other就是我们的用户角色
所以rw-就是你自己的权限,rw-是你所属组成员的权限,r--又是other(其他人的权限)。
那么这些人r、w、-这些字符又代表什么权限呢?
文件的属性权限:r:读权限 w:写权限 x:可执行权限
如果三个权限都有的话,按顺序来就是rwx,上面拥有者和所属组第三个字符为-和other第二个和第三个字符都为-的原因是,拥有者和所属组都只有读和写权限,而other只有读权限。没有的权限都会用-来代替,这里的-与第一个字符是-表达的意义不一样,前者表示权限有无,后者表示文件类型是普通类型。
2、角色
我们在文件权限后面有 hyl hyl人名称的缩写,第一个便是拥有者,第二个便是所属组,至于other,在拥有者和所属组之外的都是other。
二、文件权限有无的表现
1>快速修改权限的做法
1、文件权限谁能修改
a.拥有者
b.root(不受限制)
把超级用户root当成你的老板。。。。
我自己的文件,假如我不想让我的组员和其他人修改,只想让他们读,那么我们需要修改他们的权限,这里修改权限需要用到一个指令-chmod
我们可以看到,所属组的w权限没有了。
那么,我又想让自己(拥有者)有可执行权限呢?
可以看到,我们有了x权限。
chmod指令的使用方法为:1、chmod 角色+/-权限 文件名(一次只能对一个角色修改权限)
2、chmod 角色+/-权限,角色+/-权限 文件名(一次修改多个)
3、chmod 角色 a+/-权限 文件名(全部修改)
使用这个指令时角色的名称为 : u:拥有者 g:所属组 o:other
权限便是 r、w、x
举例:chmod u-w file.txt 让拥有者丢失对file.txt文件的修改权限。
chmod g+x file.txt 让所属组拥有对file.txt的可执行权限。
chmod o-r file.txt 让other丢失对file.txt的阅读权限。
2>修改权限后的影响
这里我用拥有者的身份给大家讲解
1、角色修改
这里修改角色,我们只能用root账号去修改角色,也就是去修改拥有者、所属组。
这里涉及到的指令为 chown、chgrp
用法:1、修改拥有者 chown 角色 文件名
2、修改所属组 chgrp 角色 文件名
2、文件属性修改
a.读权限
这里可以看到,我们去除拥有者的读权限之后,我们cat file.txt并没有将我们写进去的Hello Linux 打印出来,这也证实了我们要查看文件内容需要有读的权限。
b.写权限
我们关闭写权限时,我们发现我们echo "Good!!!" > file.txt 并没有将我们的内容写进去,所以我们如果想要写内容进去,是需要写权限的,删除亦是如此,修改内容需要写权限。
c.可执行权限
如果我们是一个程序,我们有可执行程序的话,我们便可以执行这个程序。
3>权限存在的意义
保证普通用户的文件的一般安全性!!!
三、修改文件属性权限的第二套做法
我们可以将rwx看成三个二进制位,无就是0,有就是1,rwx就是111。我们再将二进制数转化为八进制,比如rwx 111 就是7 ,我们在全部修改的时候,可以直接 chmod XXX file.txt
假如我们想改成- rwx rw- -wx ,rwx对应的二进制为111,八进制为7。rw-对应的二进制为110,八进制为6,-wx对应的二进制为011,八进制为3。那么我们在全部修改的时候,就可以用这种的方式去修改:chmod 763 file.txt。
可以看到,已经改成了我们想要的样子。
四、文件类型
在我们window系统中,不同的文件都有不同的后缀名,借此来区分不同的文件类型。
但是Linux系统不通过后缀名区分文件类型!!!
1>那它怎么区分呢?
就是我们上面所说的文件权限属性十个字符中的第一个!
比如这个,最前面的‘-’就是普通文件、文本文件。可执行程序都叫普通文件!
2>Linux文件类型:
- -:普通文件
- d:目录文件
- c-字符设备文件
- p:管道文件
- l:链接文件
但是这里需要的是,Linux不区分文件类型,但是Linux里面的工具可能区分!!!
举例:gcc
我们在file.c和file.txt中分别写下内容,当我们编译时,发现file.c可以编译过去,但是file.txt不可以,这也充分说明,gcc编译是区分文件后缀的!