讨论Linux权限
权限指对某个事物进行决策的范围和程度。
Linux用户分类
超级用户的命令提示符是
#
,普通用户的命令提示符是$
。
- 创建用户使用
adduser
+ 用户名,输入密码即可。 - 超级用户切换至普通用户,使用命令
su
+ 用户名。 - 普通用户切换至超级用户,使用命令
su
+ root 或su -
,输入root
用户密码即可。
Linux权限管理
文件访问者分类
Linux将文件访问者分为三类。
- 文件和文件目录的所有者:
u
- 文件和文件目录的所属组(所有者所在的组):
g
- 其他用户:
o
文件类型和访问权限
- 我们常看到Linux操作系统下,文件或文件目录前面都有一长串字母数字,有些可以一眼看出是什么含义,有些并不能立刻理解。
- 接下来就让我们把这些字母分解一下。
文件类型
d
:文件夹-
:普通文件l
:软链接(类似Windows的快捷方式)b
:块设备文件(如硬盘、光驱等)p
:管道文件c
:字符设备文件s
:套接口文件
基本权限
r
:读权限,对文件来说,是否具有读取文件的权限;对目录来说,是否具有浏览该目录的权限。w
:写权限,对文件来说,是否具有修改文件的权限;对目录来说,是否具有删除或移动目录内文件的权限。x
:执行权限,对文件来说,是否具有执行该文件的权限;对目录来说,是否具有进入该目录的权限。
设置文件访问权限
chmod指令
chmod
是设置文件访问权限的指令。
- 语法:
chmod
[参数] 权限 文件名- 参数:
R
:递归修改目录中文件的权限。
- 如上文件,使用
chmod
使所有者去掉可执行权限。
chmod u-x test
- 再使其他用户拥有可读权限。
chmod o+w test
- 若想将所有权限统一修改。
chmod a-rwx test
- 还可以通过8进制数值方式修改。
权限 | 八进制 | 二进制 |
---|---|---|
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw- | 6 | 110 |
r-x | 5 | 101 |
-wx | 3 | 011 |
rwx | 7 | 111 |
--- | 0 | 000 |
# 上述修改权限指令更换为8进制
chmod 675 test
chmod 677 test
chmod 000 test
chown指令
chown
指令是修改文件的拥有者
- 语法:
chown
[参数] 用户名 文件名- 常用参数:
-R
:递归修改文件或目录拥有者。
chgrp指令
chgrp
指令是修改文件或目录的所属组
- 语法:
chgrp
[参数] 用户组名 文件名- 常用参数:
-R
:递归修改文件或目录所属组。
文件和目录的默认权限
新建目录的默认权限是
777
。新建文件的默认权限是
666
。
- 但我们看到实际新建目录的权限是
775
,新建文件的权限是664
。这是由于权限掩码的存在。
权限掩码umask
umask是用来指定目前用户在新建文件或者目录时候的权限默认值。
- 凡是在
umask
中出现的权限,不会在最终的文件权限中出现。 - 最终权限 = 默认权限 & (~权限掩码)
- 普通用户的默认掩码是
0002
,root
默认掩码是0022
。
目录的权限
- 当目录权限是
777
时,文件权限是664
,作为other
用户,是有读取文件的权限的。
- 当
other
用户想要删除文件时,可以删除,这有些不合常理。当这个文件不是other
用户创建的,没有写和执行的权限,但居然有删除文件的权限。
- 为了解决这个不合理的问题,Linux引入了粘滞位的概念。
粘滞位
- 语法:
chmod +t 文件名
- 添加了粘滞位的目录,文件只能由
root
用户、目录的所有者、文件的所有者删除。