用户
超级用户(root):可以在linux下几乎不受权限约束
普通用户:几乎受所有权限的限制
root用户只有一个,root用户可以创建多个普通用户。创建方法如下:
创建用户:useradd 用户名
设置用户密码:passwd 用户名
示例:
普通用户的家目录在 /home下,可输入如下指令验证
cd ~ 转跳到家目录
cd.. 进入上级目录
ls 查看该目录下的用户
root用户和普通用户可以相互转化
su 用户名 普通用户转root用户需要输入root用户的密码,root用户转普通用户一般不需要输入普通用户的密码
示例
su - 用户名切换身份,并且回到被切换用户的家目录。
示例
文件属性
在linux下一切皆文件。无论是root用户还是普通用户访问文件时被分为三类
文件的拥有者 |
文件的所属组 |
其他用户 |
所属组代表一个用户,介于拥有者和其他用户之间的一个用户
文件类型
d :文件夹 |
- :普通文件 |
l :软链接(类似 Windows 的快捷方式) |
b :块设备文件(例如硬盘、光驱等) |
p :管道文件 |
c :字符设备文件(例如屏幕等串口设备) |
s :套接口文件 |
基本权限
r:读权限, 对普通文件而言,具有读取文件内容的权限;对目录文件来说,具有浏览该目录信息的权限 |
w:写权限 对普通文件而言,具有修改文件内容的权限;对目录文件来说具有删除移动目录内文件的权限 |
x:可执行权限 对普通文件而言,具有执行文件的权限;对目录文件来说,具有进入目录的权限 |
-:无权限 |
有了上述了解就可以查看文件属性了
输入ll 可查看文件属性。如果没有文件,可输入touch 文件名 创建文件,如果没有目录文件,可输入mkdir 目录文件名 创建目录文件
如下是一个文件的属性
文件权限值的表示方法
符号表示 | 说明 | 符号表示 | 说明 |
r-- | 可读 | -w- | 可写 |
--x | 可执行 | rw- | 可读可写 |
-wx | 可写可执行 | r-x | 可读可执行 |
rwx | 可读可写可执行 | --- | 无权限 |
文件权限八进制表示
权限符号 | 二进制 | 八进制 |
r-- | 100 | 4 |
-w- | 010 | 2 |
--x | 001 | 1 |
rw- | 110 | 6 |
r-x | 101 | 5 |
-wx | 011 | 3 |
rwx | 111 | 7 |
--- | 000 | 0 |
更改文件权限
chmod
功能: 设置文件的访问权限
格式: chmod 选项 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的 拥有者 和 root 才可以改变文件的权限
用户表示符+/-=权限字符:
+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限
用户符号:
u :拥有者
g :拥有者同组用
o :其它用户
a :所有用户
普通文件示例
目录文件示例
更改文件拥有者
需要root权限更改
chown
功能 :修改文件的拥有者
格式 : chown 用户名 文件名
示例
更改文件所属组
需要root权限更改
chgrp
功能 :修改文件或目录的所属组
格式 : chgrp 选项 用户组名 文件名
常用选项 : -R 递归修改文件或目录的所属组
示例
用户的权限
普通用户:
访问文件时,会先去匹配是否是文件的拥有者,不是的话再去匹配是否是文件的所属组,都不是的话会认为该用户为其他用户。
如果该用户同时是拥有者和所属组,那么该用户只会被匹配成拥有者,而不是所属组或两者都是。
完成上述工作后,会看该用户是否有 r w x 三种权限
超级用户:
不受拥有者,所属组,其他用户分类的限制,也不受r w x 三种权限的限制。
只要是文件,超级用户都有:读权限,写权限,可执行权限,更改拥有者权限,更改所属组权限
文件掩码
umask
功能 :
查看或修改文件掩码
格式 : umask 权限值
说明 :将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为 0022 ,普通用户默认为0002
新建文件默认权限为 0666 新建目录默认权限为0777
0666 :666对应的是:
拥有者为八进制的6,所属组为八进制的6,其他用户为八进制的6
6对应的权限为可读可写
但实际上所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。
实际创建的出来的文件权限是(二进制计算) :
实际权限 = 默认权限 & (按位与) ( ~ (按位取反) 权限掩码)
经过上述算法, 在权限掩码中出现的过的权限不会在实际权限中出现
权限掩码就像一个漏斗,把文件不想要的权限默认去掉
演示效果:
如果想要让生成的文件的所属组和其他用户无权限该怎么做呢
粘滞位
目录文件的 r w x 三种权限对应如下功能
可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
创建用户本质是在home目录下创建了一个目录文件,该目录的权限如下图
这说明 各个用户之间是隔离的
那么各个用户如果要共享资源怎么办呢?方案之一是在根目录下创建一个权限放开的目录,该目录存放公共资源,由于权限开放,每个用户都可以访问公共资源
如下图
那么问题来了
只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写
权限
那么有什么解决方案吗
于是就有了一个特殊的权限, t —— 粘滞位。 t 是特殊的 x 的权限。
如果目录被设为 t 权限,那么该目录下的文件只能被拥有者和root删除
设置方法: chmod +t 文件名
现在还能删吗
其他用户以无权删除
总结
这里小小总结一下
用户分为两种:普通用户,超级用户
文件属性有:拥有者,所属组,其他用户,可读权限,可写权限,可执行权限,文件大小,修改时间,文件名
普通用户受到的限制很大,超级用户几乎不受限制
更改文件权限 : chmod
更改文件拥有者: chown
更改文件所属组: chgrp
文件掩码: umask
粘滞位: t