Linux之文件权限
文件权限#
权限作用#
1.允许指定的用户进行文件访问
2.允许创建用户组属于该组的成员可以访问
权限说明#
对于文件#
r是只允许读取数据 例如:cat
w只允许读取数据 例如:vim echo
x允许执行 执行的命令 或者脚本
对于目录#
r查看目录下的子目录或者文件 例如:ls
w对文件夹创建或者删除新的文件或者目录 例如:mkdir touch mv rm cp
x进入目录 例如:cd
文件拥有者#
UGO:所属用户---所属组---其余用户
所属用户#
属于创建该文件的用户 该用户对于该文件拥有一切权限 所有者可以允许其所属组的的其余用户访问所有者的文件
所属组#
所属组是一组具有相同属性或者权限的逻辑集合 例如:我们想允许100个用户拥有修改a.txt这个文件的权限 可以逐个赋予改100个用户权限 但是显然用户数量过多修改繁琐 我们可以通过创建一个组 该组拥有修改a.txt的权限 在将这100个用户加入该组 于是该100个用户拥有修改a.txt这个文件的权限
其余用户#
系统内其他的所有者用户就是other类
常见文件权限组成#
rwx --- ---:#
文件所有者拥有读写执行的权限 所属组与其他成员无任何权限
rwx r-- r--:#
文件所有者具有读写执行的权限 所属组与其余用户拥有读取的权限
drwx--x—x#
目彔所有者具有读写不迚入目彔的权限,其他用户近能迚入该目彔,却无法读取任何数据
drwx------:#
除了目彔所有者具有完整的权限之外,其他用户对该目彔完全没有任何权限。
特点#
文件属主与属组修改#
chown#
改变文件或者目录的属主
chown 用户 文件名 比如: chown admin a.txt 把文件的属主和属组改为 admin
chown :组名 文件名 比如: chown :admin a.txt
chown 用户名 :组名 文件名 比如:chown root root a.txt
chgrp#
修改文件默认的默认属组
修改权限#
chmod#
作用#
修改文件或者目录的权限
u:对文件的所有者进行操作
g:对用户所属组进行操作
O:对于其余用户进行操作
操作符#
+:对文件添加权限
-:减少权限
=:直接设定某个权限
使用八进制操作权限#
作用#
表示方法#
r=4 w=2 x=1
rw- 的值是多少 答: 4+2=6
rwx r-x r-x 的值是多少 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx r-x r-x=755
文件的特殊权限#
SUID#
作用#
程序执行时候从程序的执行者拥有程序拥有者的权限
限定#
其只能设置在二进制可执行的程序上面 对目录无效果
SUID设置#
u+s 或者u=4
临时权限#
SUID一般作用在可执行文件上 当执行文件的时候会临时拥有文件所有者的权限
在上图中普通用户并没有对密码进行修改的权限 那么当用户进行修改的时候 如何修改成功的呢
上图对用户SR进行密码修改
SGID#
作用#
在设置了 SGID 权限的目彔下建立文件时,新创建的文件的所属组会继承上级目彔的权限
限定#
可以给可执行的程序设置 也可以给目录设置
[root@SR ~]mkdir test
[root@SR ~]ll -d test
drwxr-xr-x 2 root root 4096 Jan 24 20:14 test
[root@SR ~] chmod g+s test
[root@SR ~] !ll
ll -d test
drwxr-sr-x 2 root root 4096 Jan 24 20:14 test
测试: sgid 效果
[root@SR ~]chown :bin test/
[root@SR ~] touch test/a.txt
[root@SR ~] ll !$
ll test/a.txt
-rw-r--r-- 1 root bin 0 Jan 24 20:15 test/a.txt
Stickybit#
作用#
目录下创建的文件 只有root 文件拥有者 目录所有者才能删除
限定#
只能作用于目录
例: 系统中的 tmp 目彔就是这样
[root@SR ~]# ll -d /tmp/
drwxrwxrwt. 11 root root 4096 Jan 24 19:41 /tmp/
用法:
chmod o+t /tmp/test
文件扩展权限ACl#
作用#
例 2: 给目彔加扩展权限
[root@SR ~]# mkdir /tmp/test
#setfacl -m d:u:user1:rwx /tmp/test #d 默认在就是有这个权限
例 3:给目彔下所有文件都加扩展权限
[root@SR ~]# setfacl -R -m u:lee:rw- testdirectory/ #-R 一定要在-m 前面,表示
目彔下所有文件
[root@SR ~]# setfacl -x u:user1 /tmp/a.txt # 去掉单个权限
[root@SR ~]# setfacl -b /tmp/a.txt # 去掉所有 acl 权限
创建一个不允许被删除的文件#
创建一个不能被删除的文件
[root@SR ~]# touch ./test/a.txt
[root@SR ~]# chattr +i ./test/a.txt
[root@SR ~]# rm -fr ./test/a.txt
rm: 无法删除'./test/a.txt': 不允许的操作
从 REHL6 开始,新增加文件系统扩展属性:
命令: chattr
参数: a 只能追加内容 ; i 丌能被修改
+a: 只能追加内容 如: echo aaa >> hack.sh
+i:即 Immutable,系统丌允许对这个文件迚行任何的修改。如果目彔具有这个属性,那举任何的
迚程只能修改目彔之下的文件,丌允许建立和删除文件。
注: immutable [ɪˈmju:təbl] 丌可改变的 ; Append [əˈpend] 追加
-i :移除 i 参数。 -a :移除 a 参数
解决:
[root@SR ~]# lsattr hack.sh
----i----------- hack.sh
[root@SR ~]# chattr -i hack.sh
[root@SR ~]# echo aa >> hack.sh
[root@SR ~]# lsattr hack.sh #查看扩展属性
---------------- hack.sh
[root@SR ~]# chat
chat chattr
[root@SR ~]# chattr +a hack.sh
[root@SR ~]# rm -rf hack.sh
rm: 无法删除"hack.sh": 丌允许的操作
[root@SR ~]# echo aaa >> hack.sh
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!