Linux基础之文件权限

这两天试着将.NETCore站点部署到了Linux,因为缺少类似Supervisor这种Linux程序守护进程的服务,导致每当我SSH链接断开则我的.NETCore站点也随之Over。为了让我的站点能正常运转,我开始了Supervisor学习之旅,可惜Linux的基础实在是太差了,安装好Supervisor后不知道是否是配置原因,反正就是启动不起来。思考了下,感觉既然Linux后续的工作、学习都离不开它,干脆把它当成必修课一样学习,后续自己要能对Linux不说精通,至少要能应对工作。 然后开始了Linux的基础学习之旅,这里就当做个笔记吧。

Linux操作系统是一个大的文件系统,通过一套成熟的权限系统使得这些文件能够有序的存储以及被使用。

文件信息

在了解Linux的文件权限系统之前,必须掌握文件属性,其中ls命令估计是用的最多的Linux命令了。ls是list的简写,其意就是展示当前目录下的文件集合。ls 可带参数,用ls -a 可以将当前目录下的文件展示出来(且包含详细属性)。 如下图
0bc5c0a7db120ec4c7c8fe2ca65a41ed.png

上面图片中通过ls -al后返回了带有7列数据的表格。这7列从左到右分别是 权限、连接、所有者、用户组、文件容量、修改日期、文件名
比较重要的属性就是权限、所有者、用户组、文件容量(大小为B)、文件名

权限信息

Linux权限分3个身份,所有者(owner)、用户组(user group)、其他人(other)
我们使用 ls -al 命令查看下所属目录下的子目录或者文件,如下图
477785998ec3dd6ae3e113dc43c8d298.png
上图用红色框框框住的部分是文件或目录的权限信息,它的格式是 文件属性格式+所有者权限+用户组权限+其他人权限
如 drwxr-xr-x 第一个字符d是表示这个文件的属性格式属于目录。

文件属性格式

文件属性格式名称文件属性格式意思
d 目录
- 文件
l 连接文件(linkfile)
b 设备文件里面可供存储的接口设备
c 设备文件里面的串行端口设备,例如键盘、鼠标..

文件权限格式

如上图的drwxr-xr-x ,首字母表示文件格式,后面的rwxr-xr-x表示权限信息。权限信息分为3段,一共9个字符,其中-字符表示无权限意思,这3段也是给Linux的权限身份赋予的权限。第一段是所有者的权限,第二段是用户组的权限,第三段则是其他人的权限。
那这些字母是什么意思?看下面表格解答

权限格式名称权限格式意思备注
r 可读 单词read简写
w 可写 单词write简写
x 可执行 单次execute简写
- 无权限  

改变文件权限

我们可以通过Linux内置的命令对文件进行用户组信息变更、所有者变更、权限变更

chgrp 变更用户组

命令格式: chgrp 用户组名称 文件(或目录)名称:

范例 :

 chgrp root test2.log

93ead6b1d34e529a20a4f76ab7d1b4ce.png

通过上图可以看到用户组信息已变更为root。 这里需要注意用户组必须是Linux已存在的,可以在/etc/group配置文件内查看Linux已存在的用户组,使用命令 vim /etc/group 查看即可,退出时候按esc键切换vim命令模式 输入:q或:q!退出即可。

chown 变更所有者

命令格式 chown 所有者名称 文件(或目录)名称
与chgrp相似的特性是变更的所有者也必须是在Linux已存在的用户,可通过vim命令查看/etc/passwd这个文件下已存在的用户信息
范例:

 chown bin test2.log

aeae649cdb96bb980b9754954dd27dd3.png

如果是更改的整个目录下的子文件和子目录可以通过chown -R完成,比如我们新建一个logs目录,再在该目录上创建logs2、logs3子目录,如下图:
8a26cff0120471c51e62564030f134fb.png
然后我们在logs2和logs3目录下分别创建logs2.1.log和logs3.1.log

4864a3578ea40c1a284050d71d9ff322.png
我们可以看到已经创建好了文件,通过ls -al 查看下文件详细信

fba5b4d44c9832c2f7fc789343356a53.png

34b068ba4bf355c7d316350f376fc4c7.png

我们看上图会发现上图的所有人都是root,用户组也是root, 假设我现在想把logs下所有的目录和文件都变更所有人怎么操作?
范例代码:

 chown  -R bin logs

我们查看下logs子目录的文件属性可以看到logs2和logs3的所有人均变更为bin了
a2d639ca45215b1a1321b89512e75313.png

更改所有者同时更改用户组

范例:

 chown  -R  root:root logs

chmod 变更文件权限

chmod 命令稍微复杂些,因为它可以带不同风格的参数,比如: chmod 666 logs chmod u=rw go=r
乍一看真的很懵逼。这其实是Linux权限变更的两种类型,1种是数字类型,1种是符号类型。
下面表格就是数字所表示的权限含义

以数字模式更改权限

权限简称数字权限含义
r 4 可读
w 2 可写
x 1 可执行
- 0 无权限

如 chmod 644 logs 意思就是logs目录的权限是所有者可读、可写,用户组和其他人的权限是可读

以符号模式更改权限

已知权限最终分配的对象是user(所有者)、group(用户组)、others(其他者),那么在符号模式下分别用u、g、o代替
权限的代表符号也是已知的 r、w、x 分别是读取、写入、执行。现在可以使用+ - =这3个赋值符号对分配对象给予权限的赋值。
范例

 chmod u=rw,g=rw,o=r logs

上面的非常好理解,就是对logs文件进行权限分配,其中所有者和用户组具备可读、可写权限,其他者只有读取权限。
那如果想在文件的原有权限上做增加或者移除则可以使用+-两个符号。
范例

 chmod o+w logs

上面就是针对logs目录给其他者添加写入权限

小结

我们知道在windows下面判断一个文件是否具备执行功能取决于它的后缀名,如.exe、.txt、.log、.ini等等,但是Linux下的文件是否具备可执行能力完全取决于它的权限。所以x权限极其重要!

工作目录

工作目录对于Linux的操作至关重要,我们常用的cd命令变更当前目录可以理解为变更工作目录,那么如何判断某个目录实付可以通过cd跳转过去取决于那个目录是否具备x权限(可执行权限),对没错!就是目录也有x权限,且这个权限决定了指定用户是否可以cd到这个目录。至于r权限对目录而言是表示可以查询这个目录下得文件和子目录信息。

啊~ 终于写完这一篇笔记了,对Linux的文件权限基本操作也算是掌握了,路还很长还是得砥砺前行啊~

posted @ 2020-02-06 14:46  长沙大鹏  阅读(446)  评论(0编辑  收藏  举报