本文是快乐学习Linux的第四篇,是基于Windows的Linux子系统(WSL)进行操作的。
适用于学习Linux系统中文件权限和进程相关内容的读者。
权限
本系列的博客内容其实是建立在WSL上的,主要是仅给个人用户一个Linux环境,顺便来熟悉Linux系统,所以以下不会涉及太过复杂的权限设置,会覆盖基本的操作。
当我们使用ls -l进行查看的时候,会按照长模式的方式显示:
1 | 文件访问权限 硬链接数目 文件所属用户 文件所属用户组 文件大小 上次修改日期 文件名 |
文件访问权限
文件访问权限是由两部分组成的,一部分是文件类型,一部分是文件模式。
文件类型有:
- -:普通文件。
- d:目录。
- l:符号连接,其显示的文件模式都是虚拟值,真正的文件模式是链接指向的文件决定的。
- c:字符设备文件,按照字节流处理数据的设备,例如终端机或者调制解调器。
- b:块设备文件,按照数据块处理数据的设备,例如硬盘或者CD-ROM。
文件模式由文件所有者、文件组所有者和其他人三种用户的三种基本的:可读r、可写w、可执行x(s、t什么的就不涉及了)组成,共9个字符。
属性 | 文件 | 目录 |
---|---|---|
r | 允许打开并读写文件内容 | 允许列出目录内容,前提是目录设置了x属性 |
w | 允许写入文件内容。重命名或删除是根据目录属性来的 | 允许在目录下新建、删除或重命名文件,前提也是目录设置了x属性 |
x | 允许将文件作为程序来执行,脚本语言编写的程序必须具备 |
更改文件模式
我们可以使用chomd来更改文件模式,更改的方式有两种,一种是八进制数字表示法或符号表示法,由于本人倾向于八进制数字表示法,且确实很nice,所以就不介绍符号表示法了。
八进制数字表示法是因为1个八进制恰好需要3个二进制位来表示,而3个权限刚好对应3个二进制位,那么3种用户就只需要使用3位八进制数来表示即可(缕一缕这句话,其实挺清楚的)。
例如r--
就是100,也就是4,rw-
就是110,也就是6,以此类推即可。
那么新建并修改foo.txt权限为rwxrw-r--
只需要使用:
1 | > foo.txt |
默认权限
当我们新建文件的时候会自动赋予一个默认权限,这里在WSL下,默认的是rw-r--r--
,这是由umask
进行控制的。
命令行使用umask
进行查看,会发现响应的数值是0022,常用的Linux系统还有0002,对应着关闭了哪些权限,2指的就是10,也就是原始文件权限是rw-rw-rw-
,根据umask的掩码来关闭某些权限,作为最终的默认权限。
一般不用修改,使用系统默认的就可以了。
用户和用户组
针对具有多个用户和用户组的情况下,不同用户具有不同的文件的控制权。
su [-[l]] [user]:是允许我们切换到另一个用户的身份,重新启动一个shell进程。
-l 表示切换shell环境,并更改工作目录到该用户下,没有用户名则默认是root,如下切换至root用户:
1
su -
需要输入切换后用户的密码,登录后超级用户root显示的符号从“
$
”变为“#
”,使用exit退出。sudo:是允许一个普通用户以另一个用户的身份执行任务,本质上用户并没有切换,而且输入的密码是用户本身的密码,并且密码可以维持一段时间的信任。
可以使用chown [owner][:[group]] file
对文件的用户和用户组进行更改。
使用passwd
可以更改密码。
进程
个人收获
关于文件和目录权限的内容并不过多赘述,之后存在需求之后再进行补充。