文章目录
Linux下有两种用户:超级用户(root)和普通用户(user)
- 超级用户:可以在Linux下做任何事
- 普通用户:权限有限
- 超级用户的命令提示符为**#,普通用户的命令提示符为$**
普通用户->超级用户:su / su -
超级用户->普通用户:su user_name
文件访问者分类
- 文件和文件目录所有者:u—User
- 文件和文件目录的所有者所在组的用户:g—Group
- 其他人:o—Others
文件类型和访问权限
(1)文件类型
- d 文件夹
- - 普通文件
- l 软连接(类似windows的快捷方式)
- b 块设备文件(例如硬盘、光驱等)
- p 管道文件
- c 字符设备文件(例如屏幕等串口设备)
- s 套接口文件
(2)基本权限
- 读(r/4):对文件而言,具有读取文件内容的权限;对于目录而言,具有浏览该目录信息的权限
- 写(w/2):对文件而言,具有修改文件内容的权限;对于目录而言,具有删除和移动目录内文件的权限
- 执行(x/1):对文件而言,具有执行文件的权限;对于目录而言,具有进入目录的权限
- - 表示不具有任何权限
文件权限值的表示方法
(1)字符表示方法
Linux表示 | 说明 | Linux表示 | 说明 |
---|---|---|---|
r– | 只读 | -w- | 只写 |
–x | 只执行 | rw- | 可读可写 |
r-x | 可读可执行 | -wx | 可读可执行写 |
rwx | 可读可写可执行 | — | 无权限 |
(2)8进制数值表示方法
权限符号 | 二进制 | 八进制 |
---|---|---|
r | 100 | 4 |
w | 010 | 2 |
x | 001 | 1 |
rw | 110 | 6 |
rx | 101 | 5 |
wx | 011 | 3 |
rwx | 111 | 7 |
--- | 000 | 0 |
文件权限的设置
(1) chmod
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
- R 递归修改目录文件的权限(只有root用户可以修改权限)
chmod命令权限值的格式:
① 用户标识符 +/- 权限字符
- + 向权限范围增加权限代号所表示的权限
- - 向权限范围取消权限代号所表示的权限
- = 向权限范围赋予权限代号所表示的权限
- u 拥有者
- g 拥有者同组用
- o 其它用户
- a 所有用户
实例:
② 三位8进制数字
实例:
(2)chown
功能:修改文件的拥有者
格式:chown [参数] 用户名 文件名
实例:
此时运行chown显示权限不够,每次切换root用户非常麻烦,因此此时介绍一个新方法——sudo
这里有些小伙伴无法执行sudo命令,因为还没有将用户添加进root的sudoers文件中,方法:
- su
- echo ‘username ALL=(ALL) ALL’ >> /etc/sudoers
username为要加入sudoers的用户
(3)chgrp
功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:
- -R 递归修改文件或目录的所属组
实例:
(4)umask
功能:查看或修改文件掩码
格式:umask 权限值
说明:
- 新建文件夹默认权限 = 0666
- 新建目录默认权限 = 0777
- 假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
- 将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
实例:
- 可执行权限:如果目录没有可执行权限,则无法cd到目录中
- 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
- 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
实例:
但是问题来了,只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.
结论:
- 如果目录对other具有w权限,other可以删除目录下任何一个文件
- 如果目录对other没有w权限,other不可以删除目录下的任何文件
需求:
- other可以在特定目录下创建文件,但不可以删掉自己的文件。
由此引入粘滞位的概念。
通过sudo chmod o+t
设置目录的粘滞位
当一个目录被设置为粘滞位,该目录下的文件只能被超级管理员、该目录所有者、该文件所有者删除。
- 目录的可执行权限是表示你可否在目录下执行命令
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录, 即使目录仍然有读权限
- 如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限,所以即使可以执行ls命令,但仍然没有权限读出目录下的文档
来源地址:https://blog.csdn.net/weixin_42301369/article/details/123088311