Linux基础之文件权限
这两天试着将.NETCore站点部署到了Linux,因为缺少类似Supervisor这种Linux程序守护进程的服务,导致每当我SSH链接断开则我的.NETCore站点也随之Over。为了让我的站点能正常运转,我开始了Supervisor学习之旅,可惜Linux的基础实在是太差了,安装好Supervisor后不知道是否是配置原因,反正就是启动不起来。思考了下,感觉既然Linux后续的工作、学习都离不开它,干脆把它当成必修课一样学习,后续自己要能对Linux不说精通,至少要能应对工作。 然后开始了Linux的基础学习之旅,这里就当做个笔记吧。
Linux操作系统是一个大的文件系统,通过一套成熟的权限系统使得这些文件能够有序的存储以及被使用。
文件信息
在了解Linux的文件权限系统之前,必须掌握文件属性,其中ls命令估计是用的最多的Linux命令了。ls是list的简写,其意就是展示当前目录下的文件集合。ls 可带参数,用ls -a 可以将当前目录下的文件展示出来(且包含详细属性)。 如下图
上面图片中通过ls -al后返回了带有7列数据的表格。这7列从左到右分别是 权限、连接、所有者、用户组、文件容量、修改日期、文件名
比较重要的属性就是权限、所有者、用户组、文件容量(大小为B)、文件名
权限信息
Linux权限分3个身份,所有者(owner)、用户组(user group)、其他人(other)
我们使用 ls -al 命令查看下所属目录下的子目录或者文件,如下图
上图用红色框框框住的部分是文件或目录的权限信息,它的格式是 文件属性格式+所有者权限+用户组权限+其他人权限
如 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
通过上图可以看到用户组信息已变更为root。 这里需要注意用户组必须是Linux已存在的,可以在/etc/group配置文件内查看Linux已存在的用户组,使用命令 vim /etc/group 查看即可,退出时候按esc键切换vim命令模式 输入:q或:q!退出即可。
chown 变更所有者
命令格式 chown 所有者名称 文件(或目录)名称
与chgrp相似的特性是变更的所有者也必须是在Linux已存在的用户,可通过vim命令查看/etc/passwd这个文件下已存在的用户信息
范例:
chown bin test2.log
如果是更改的整个目录下的子文件和子目录可以通过chown -R完成,比如我们新建一个logs目录,再在该目录上创建logs2、logs3子目录,如下图:
然后我们在logs2和logs3目录下分别创建logs2.1.log和logs3.1.log
我们可以看到已经创建好了文件,通过ls -al 查看下文件详细信
我们看上图会发现上图的所有人都是root,用户组也是root, 假设我现在想把logs下所有的目录和文件都变更所有人怎么操作?
范例代码:
chown -R bin logs
我们查看下logs子目录的文件属性可以看到logs2和logs3的所有人均变更为bin了
更改所有者同时更改用户组
范例:
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的文件权限基本操作也算是掌握了,路还很长还是得砥砺前行啊~