本文共 2010 字,大约阅读时间需要 6 分钟。
Linux权限管理
Linux权限管理
Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户以及所属组,通过这样的机制来限制哪些用户或用户组可以对特定文件进行相应的操作。
1、文件基本权限
在Linux使用 ls -l 命令后会看到这样的界面:
这一行输出的前面是一个长度为十的字符串:drwxr-xr-x- 第一个字符表示文件类型(文件、目录、软链接)
- 后面九个字符,每三个为一组,表示对应用户(所有者、所属组、其他用户)使用该文件的权限(读、写、执行)
文件类型:
符号 | 对应文件类型 |
---|---|
- | 文件 |
d | 目录 |
l | 软链接 |
用户类型
符号 | 对应用户类型 |
---|---|
u | 所有者 |
g | 所属组 |
o | 其他用户 |
操作权限:
符号 | 对应操作权限 |
---|---|
r | 读 |
w | 写 |
x | 执行 |
1.1 基本权限的修改
修改权限的命令格式:
chmod [选项] 模式 文件名 -选项 * -R 递归 -模式 * [ugoa] [+-] [rwx] * [mode = 421]
-
第一种方式(不常用):使用 加减号 逐个添加、减少权限
chmod u+x test.gz //给 所有者 增加 “执行”
chmod g+w,o+w test.gz //给 所属组、其他用户 添加 “写” chmod g-w,o-w test.gz //给 所属组、其他用户 去除 “读” -
第二种方式(不常用):使用 等号 给对应用户的权限进行 “赋值”
chmod a=rwx test.gz //将 所有人 的权限设置为 “读、写、执行”
-
第三种方式:使用数字表示权限
chmod 755 test.gz //将 所有人 的权限设置为 “读、写、执行”
参考下表,对指令中 755 的解释:
rwx = 4 + 2 + 1 = 7 r-x = 4 + 1 = 5 r-x = 4 + 1 = 5
操作权限:
数字 | 对应操作权限 |
---|---|
4 | 读( r ) |
2 | 写( w ) |
1 | 执行( x ) |
1.2 权限的作用
权限对 文件 的作用
- r:: 读取文件内容(cat、more、head、tail)
- w: 编辑、新增、修改文件内容(vi、echo)—但不包含删除文件
- x::可执行
权限对 目录 的作用
- r:: 可以查询目录下文件名( ls )
- w: 可以修改目录结构的权限,如:创建文件和目录,删除此目录下文件和目录,重命名此目录下文件和目录,剪切( touch、rm、mv、cp )
- x:: 可以进入目录( cd )
从上面权限对文件和目录的作用能发现:
- 对于文件,最高权限是 执行x
- 对于目录,最高权限是 写w
1.3 其他权限命令
改变文件的所有者:chown 用户名 文件名
改变文件的所属组:chgrp 组名 文件名 同时修改 u 和 g :chown 用户名:组名 文件名 例如:chown root:root 1232、文件默认权限
在Linux中,创建一个文件后系统会设置它的默认权限,Windows中,新建文件会继承所在文件夹的权限。
2.1 查看文件默认权限
在Linux中可以使用 umask 命令可以查看系统的 文件默认权限(tips:看到 umask 有木有联想到 子网掩码 的计算过程)
2.2 计算文件默认权限
在解释文件默认权限之前,需要知道:文件默认最大权限 是 666,所以目录默认最大权限是 777
(因为777包含执行权限,如果有人上传病毒脚本到Linux服务器上,系统还默认给它执行权限的话,挺危险的,所以最大只能是 666,不能再大了,目录就无所谓了。)
其中:第一个 0 是 文件特殊权限,后面 022 才是 文件默认权限 。022 对应的文件默认权限为 644,对应的目录默认权限为 755,它的计算过程为:
用 文件/目录默认最大权限 减去 umask 值,就是新建 文件/目录 的默认权限。例如,计算 umask 值 0022 对应的文件默认权限: 使用 666 对应的权限: - r w - r w - r w - 减去 022 对应的权限: - - - - - w - - w - 计算结果: - r w - r - - r - -也就是 644。(另外,umask 值 0033 对应的权限也是 644 嗷~)新建目录的默认权限的计算方法同理。
所以 umask 的计算就是把数字换成字母做减法。
2.3 修改文件默认权限
- 临时修改:
umask 0002
- 永久修改:
vi /etc/profile
在这个环境变量配置文件中加上下面的代码:
if [ $UID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then umask 002else umask 022fi
转载地址:https://blog.csdn.net/weixin_43399464/article/details/104984566 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!