第四课、文件类型&权限管理
Linux系统中一切皆文件,但是每个文件的类型不相同,系统使用不同的字符来区分。
- :普通文件
d :目录
b:块设备(硬盘、) block
c:字符设备文件(虚拟终端)
l:链接文件
p:管道文件
s:安全套接字文件socket(服务基于某个协议,则就有端口号,)
权限管理
1. Linux权限是操作系统用来限制对资源访问的机制,权限一般分为 读、写、执行。系统中每个文件都拥有特定的权限,所属用户及其所属组,通过这样的机制来限制哪些用户或者用户组可以对特定文件及逆行相应的操作。
2. Linux每个进程都是以某个用户身份进行的,进程的权限与该用户的权限一样,用户的权限越大,则进程拥有的权限就越大。
Linux中有的文件及文件夹都有至少权限三种权限:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r(读取) | 可读取文件内容 | 可列出目录内容 |
w(写入) | 可修改文件内容 | 可在目录中创建删除内容 |
x(exec) | (执行) | 可作为命令执行(脚本) |
目录必须拥有x权限,否则无法查看其内容
💡 問 :文件 -rwx 现在可以删除这个文件吗?
文件是否可以删除不是看文件自身权限,而是看所在目录是否具备(w)权限
文件类型 | user | group | other | 隐藏权限 | 快捷方式 | 属主 | 属组 | 文件大小 | 日期 | 文件名 |
---|---|---|---|---|---|---|---|---|---|---|
字符表示 | U | G | O | |||||||
数字表示 | 4 | 2 | 1 | |||||||
d | rwx | r-x | r-x | . | 6 | root | root | 100 | oct | yum |
- 文件默认权限 644
- 目录默认权限755 ,满位是777,相差022(反掩码umask)
- 权限最小化⇒ 目录一定要能访问(x)
umask ⇒ 022 特殊权限(内部设定的规则)
修改umask后,目录默认还是777
在linux权限中,除了普通权限外,还有如下表示,三个特殊权限
Suid:相当于给普通用户提权。
**Sgid:**基本不用
Sbit:
t(分大小写) 表示的是 SBIT,对目录拥有写入权限w的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。
如何授权t这个权限
umask有4位
其中第一位是: 特殊权限位(本身拥有4个值) 当t = 1
所有特殊权限 都是根据当前位置上是否具备x权限
如果具备x权限, 则是t(小写)
如果不具备x权限,则是T(大写)
- chmod 1776 tmp
- stat 查看文件信息
stat /etc/hosts
修改权限:
- 数字方式
chmod 修改权限
chown 修改所属
-R 递归创建
- 表达式方式
+ 授权
- 撤销
= 覆盖
chmod u+x,g+x,o-x file1
chmod +x file1
默认是给user用户加权。
chmod u=w file1
覆盖user用户的所有权限
修改所属
chown
chown root.yzh1 file1
修改属组
chgrp (change group)
chgrp yzh1 text.txt
修改目录以及此目录下一切文件权限
chown -R /root/
注意:
是否加 / 的区别
chmod -R /etc 不加/ ,表示连同etc自身都改变
chmod -R /etc/ 加/, 表示不包括etc自身
文件中的隐藏属性(普通→特殊→隐藏)
很多文件有权限但还是无法删除,就是因为有隐藏权限的原因。
. (ACL 访问控制列表)这个是隐藏属性
- chattr 设置文件的隐藏权限,
格式: “ chattr [参数] 文件”
日常工作整理报告:
增加权限:
a 只能追加,无法覆盖,删除
chattr +a file
i
无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a
仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S
文件内容在变更后立即同步到硬盘(sync)
s
彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
A
不再修改这个文件或目录的最后访问时间(atime)
b
不再修改文件或目录的存取时间
D
检查压缩文件中的错误
d
使用dump命令备份时忽略本文件/目录
c
默认将文件或目录进行压缩
u
当删除该文件后依然保留其在硬盘中的数据,方便日后恢复 ( 硬盘恢复--> 需要特殊工具)
t
让文件系统支持尾部合并(tail-merging)
x
可以直接访问压缩文件中的内容
- lsattr 查看
文件访问控制列表(ACL)
对指定用户设置单独权限。 针对的是用户、用户组、文件、目录。
针对某个目录设置ACL,则目录种的文件会继承ACL。若针对文件设置ACL,则文件不再继承其所在目录的ACL。
- setfacl
setfacl [参数] 文件名称
-R 对目录权限的递归ACL
-m 对普通文件ACL
-b 删除此文件的ACL
- setfacl -Rm u:yzh2:rwx /root
setfacl -Rm u : yzh2 : rwx /root
ACL命令 参数 指定是用户:哪个用户:分配什么权限 具体目录、文件
su命令与sudo服务
sudo将特定权限赋给指定用户
sudo配置文件
- /etc/sudoers 提供集中的用户管理、权限与主机等参数
- visudo
root ALL=(ALL) ALL
谁可以使用 允许使用的主机=(以什么身份) 可执行命令的列表(绝对路径且各命令之间,分割)
yzh2 ALL = (root) /usr/sbin/reboot,/usr/sbin/cat
yzh2 ALL = NOPASSWD:
什么时候用sudo,就看前面$ 还是#
每次执行sudo时候都需要密码,这样很不方便。
所以:
添加 NOPASSWD 参数即可。